diff --git a/scene/gui/scroll_bar.cpp b/scene/gui/scroll_bar.cpp index 0b9e21e7b3..d8a8ea01f4 100644 --- a/scene/gui/scroll_bar.cpp +++ b/scene/gui/scroll_bar.cpp @@ -50,13 +50,13 @@ void ScrollBar::gui_input(const Ref &p_event) { accept_event(); if (b->get_button_index() == MouseButton::WHEEL_DOWN && b->is_pressed()) { - double change = get_page() != 0.0 ? get_page() / 4.0 : (get_max() - get_min()) / 16.0; + double change = ((get_page() != 0.0) ? get_page() / PAGE_DIVISOR : (get_max() - get_min()) / 16.0) * b->get_factor(); scroll(MAX(change, get_step())); accept_event(); } if (b->get_button_index() == MouseButton::WHEEL_UP && b->is_pressed()) { - double change = get_page() != 0.0 ? get_page() / 4.0 : (get_max() - get_min()) / 16.0; + double change = ((get_page() != 0.0) ? get_page() / PAGE_DIVISOR : (get_max() - get_min()) / 16.0) * b->get_factor(); scroll(-MAX(change, get_step())); accept_event(); } diff --git a/scene/gui/scroll_bar.h b/scene/gui/scroll_bar.h index b2d019c350..f2a49e4e7f 100644 --- a/scene/gui/scroll_bar.h +++ b/scene/gui/scroll_bar.h @@ -110,6 +110,8 @@ protected: static void _bind_methods(); public: + static inline const int PAGE_DIVISOR = 8; + void scroll(double p_amount); void scroll_to(double p_position); diff --git a/scene/gui/scroll_container.cpp b/scene/gui/scroll_container.cpp index 10803bf9b8..21486f12e3 100644 --- a/scene/gui/scroll_container.cpp +++ b/scene/gui/scroll_container.cpp @@ -129,19 +129,19 @@ void ScrollContainer::gui_input(const Ref &p_gui_input) { if (mb->get_button_index() == MouseButton::WHEEL_UP) { // By default, the vertical orientation takes precedence. This is an exception. if ((h_scroll_enabled && mb->is_shift_pressed()) || v_scroll_hidden) { - h_scroll->scroll(-h_scroll->get_page() / 8 * mb->get_factor()); + h_scroll->scroll(-h_scroll->get_page() / ScrollBar::PAGE_DIVISOR * mb->get_factor()); scroll_value_modified = true; } else if (v_scroll_enabled) { - v_scroll->scroll(-v_scroll->get_page() / 8 * mb->get_factor()); + v_scroll->scroll(-v_scroll->get_page() / ScrollBar::PAGE_DIVISOR * mb->get_factor()); scroll_value_modified = true; } } if (mb->get_button_index() == MouseButton::WHEEL_DOWN) { if ((h_scroll_enabled && mb->is_shift_pressed()) || v_scroll_hidden) { - h_scroll->scroll(h_scroll->get_page() / 8 * mb->get_factor()); + h_scroll->scroll(h_scroll->get_page() / ScrollBar::PAGE_DIVISOR * mb->get_factor()); scroll_value_modified = true; } else if (v_scroll_enabled) { - v_scroll->scroll(v_scroll->get_page() / 8 * mb->get_factor()); + v_scroll->scroll(v_scroll->get_page() / ScrollBar::PAGE_DIVISOR * mb->get_factor()); scroll_value_modified = true; } } @@ -150,19 +150,19 @@ void ScrollContainer::gui_input(const Ref &p_gui_input) { if (mb->get_button_index() == MouseButton::WHEEL_LEFT) { // By default, the horizontal orientation takes precedence. This is an exception. if ((v_scroll_enabled && mb->is_shift_pressed()) || h_scroll_hidden) { - v_scroll->scroll(-v_scroll->get_page() / 8 * mb->get_factor()); + v_scroll->scroll(-v_scroll->get_page() / ScrollBar::PAGE_DIVISOR * mb->get_factor()); scroll_value_modified = true; } else if (h_scroll_enabled) { - h_scroll->scroll(-h_scroll->get_page() / 8 * mb->get_factor()); + h_scroll->scroll(-h_scroll->get_page() / ScrollBar::PAGE_DIVISOR * mb->get_factor()); scroll_value_modified = true; } } if (mb->get_button_index() == MouseButton::WHEEL_RIGHT) { if ((v_scroll_enabled && mb->is_shift_pressed()) || h_scroll_hidden) { - v_scroll->scroll(v_scroll->get_page() / 8 * mb->get_factor()); + v_scroll->scroll(v_scroll->get_page() / ScrollBar::PAGE_DIVISOR * mb->get_factor()); scroll_value_modified = true; } else if (h_scroll_enabled) { - h_scroll->scroll(h_scroll->get_page() / 8 * mb->get_factor()); + h_scroll->scroll(h_scroll->get_page() / ScrollBar::PAGE_DIVISOR * mb->get_factor()); scroll_value_modified = true; } } @@ -250,10 +250,10 @@ void ScrollContainer::gui_input(const Ref &p_gui_input) { Ref pan_gesture = p_gui_input; if (pan_gesture.is_valid()) { if (h_scroll_enabled) { - h_scroll->scroll(h_scroll->get_page() * pan_gesture->get_delta().x / 8); + h_scroll->scroll(h_scroll->get_page() * pan_gesture->get_delta().x / ScrollBar::PAGE_DIVISOR); } if (v_scroll_enabled) { - v_scroll->scroll(v_scroll->get_page() * pan_gesture->get_delta().y / 8); + v_scroll->scroll(v_scroll->get_page() * pan_gesture->get_delta().y / ScrollBar::PAGE_DIVISOR); } if (v_scroll->get_value() != prev_v_scroll || h_scroll->get_value() != prev_h_scroll) { @@ -411,19 +411,19 @@ void ScrollContainer::_accessibility_action_scroll_set(const Variant &p_data) { } void ScrollContainer::_accessibility_action_scroll_up(const Variant &p_data) { - v_scroll->set_value(v_scroll->get_value() - v_scroll->get_page() / 8); + v_scroll->set_value(v_scroll->get_value() - v_scroll->get_page() / ScrollBar::PAGE_DIVISOR); } void ScrollContainer::_accessibility_action_scroll_down(const Variant &p_data) { - v_scroll->set_value(v_scroll->get_value() + v_scroll->get_page() / 8); + v_scroll->set_value(v_scroll->get_value() + v_scroll->get_page() / ScrollBar::PAGE_DIVISOR); } void ScrollContainer::_accessibility_action_scroll_left(const Variant &p_data) { - h_scroll->set_value(h_scroll->get_value() - h_scroll->get_page() / 8); + h_scroll->set_value(h_scroll->get_value() - h_scroll->get_page() / ScrollBar::PAGE_DIVISOR); } void ScrollContainer::_accessibility_action_scroll_right(const Variant &p_data) { - h_scroll->set_value(h_scroll->get_value() + h_scroll->get_page() / 8); + h_scroll->set_value(h_scroll->get_value() + h_scroll->get_page() / ScrollBar::PAGE_DIVISOR); } void ScrollContainer::_notification(int p_what) {