diff options
| author | toger5 | 2017-02-22 00:45:31 +0200 |
|---|---|---|
| committer | Rémi Verschelde | 2017-05-07 14:23:56 +0200 |
| commit | 304a1f5b5a3ce6975952f5cd22d688a246367790 (patch) | |
| tree | 14de7920daa3f90af91c668b3edcccdf439ed6f2 /scene/gui/scroll_container.cpp | |
| parent | c8aea60324e3e219945a805f871363c10292f38b (diff) | |
| download | godot-304a1f5b5a3ce6975952f5cd22d688a246367790.tar.gz godot-304a1f5b5a3ce6975952f5cd22d688a246367790.tar.zst godot-304a1f5b5a3ce6975952f5cd22d688a246367790.zip | |
Implemented scrolling factor for smooth trackpad scrolling
Working platforms platform: OSX, Windows.
Support for almost all ui elements, including project list.
Diffstat (limited to 'scene/gui/scroll_container.cpp')
| -rw-r--r-- | scene/gui/scroll_container.cpp | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/scene/gui/scroll_container.cpp b/scene/gui/scroll_container.cpp index 9146fa939..a89c2b27c 100644 --- a/scene/gui/scroll_container.cpp +++ b/scene/gui/scroll_container.cpp @@ -85,20 +85,32 @@ void ScrollContainer::_gui_input(const InputEvent &p_gui_input) { const InputEventMouseButton &mb = p_gui_input.mouse_button; if (mb.button_index == BUTTON_WHEEL_UP && mb.pressed) { - if (h_scroll->is_visible_in_tree() && !v_scroll->is_visible_in_tree()) { - // only horizontal is enabled, scroll horizontally - h_scroll->set_value(h_scroll->get_value() - h_scroll->get_page() / 8); + // only horizontal is enabled, scroll horizontally + if (h_scroll->is_visible() && !v_scroll->is_visible()) { + h_scroll->set_value(h_scroll->get_value() - h_scroll->get_page() / 8 * mb.factor); } else if (v_scroll->is_visible_in_tree()) { - 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() / 8 * mb.factor); } } if (mb.button_index == BUTTON_WHEEL_DOWN && mb.pressed) { - if (h_scroll->is_visible_in_tree() && !v_scroll->is_visible_in_tree()) { - // only horizontal is enabled, scroll horizontally - h_scroll->set_value(h_scroll->get_value() + h_scroll->get_page() / 8); - } else if (v_scroll->is_visible_in_tree()) { - v_scroll->set_value(v_scroll->get_value() + v_scroll->get_page() / 8); + // only horizontal is enabled, scroll horizontally + if (h_scroll->is_visible() && !v_scroll->is_visible()) { + h_scroll->set_value(h_scroll->get_value() + h_scroll->get_page() / 8 * mb.factor); + } else if (v_scroll->is_visible()) { + v_scroll->set_value(v_scroll->get_value() + v_scroll->get_page() / 8 * mb.factor); + } + } + + if (mb.button_index == BUTTON_WHEEL_LEFT && mb.pressed) { + if (h_scroll->is_visible_in_tree()) { + h_scroll->set_value(h_scroll->get_value() - h_scroll->get_page() * mb.factor / 8); + } + } + + if (mb.button_index == BUTTON_WHEEL_RIGHT && mb.pressed) { + if (h_scroll->is_visible_in_tree()) { + h_scroll->set_value(h_scroll->get_value() + h_scroll->get_page() * mb.factor / 8); } } |
