aboutsummaryrefslogtreecommitdiff
path: root/scene/gui/scroll_container.cpp
diff options
context:
space:
mode:
authortoger52017-02-22 00:45:31 +0200
committerRémi Verschelde2017-05-07 14:23:56 +0200
commit304a1f5b5a3ce6975952f5cd22d688a246367790 (patch)
tree14de7920daa3f90af91c668b3edcccdf439ed6f2 /scene/gui/scroll_container.cpp
parentc8aea60324e3e219945a805f871363c10292f38b (diff)
downloadgodot-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.cpp30
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);
}
}