summaryrefslogtreecommitdiff
path: root/scene/main
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <rverschelde@gmail.com>2017-11-21 13:03:32 +0100
committerGitHub <noreply@github.com>2017-11-21 13:03:32 +0100
commit5a23136d1bdc88589ee7082098dadf74afef53c2 (patch)
tree70f59ef74795849c2941db99d92ba61e36a5bf8a /scene/main
parentec4d467b4c5edac86af6aaab0545770377294346 (diff)
parent80ad8afc85a90e6fda1b136b13c1eb42e35c115e (diff)
Merge pull request #12573 from poke1024/macostouchpad
Native pan and zoom for macOS + InputEventGesture
Diffstat (limited to 'scene/main')
-rw-r--r--scene/main/viewport.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp
index 0a02f471c1..1f539041fd 100644
--- a/scene/main/viewport.cpp
+++ b/scene/main/viewport.cpp
@@ -2013,6 +2013,30 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
}
}
+ Ref<InputEventGesture> gesture_event = p_event;
+ if (gesture_event.is_valid()) {
+
+ Size2 pos = gesture_event->get_position();
+
+ Control *over = _gui_find_control(pos);
+ if (over) {
+
+ if (over->can_process()) {
+
+ gesture_event = gesture_event->xformed_by(Transform2D()); //make a copy
+ if (over == gui.mouse_focus) {
+ pos = gui.focus_inv_xform.xform(pos);
+ } else {
+ pos = over->get_global_transform_with_canvas().affine_inverse().xform(pos);
+ }
+ gesture_event->set_position(pos);
+ _gui_call_input(over, gesture_event);
+ }
+ get_tree()->set_input_as_handled();
+ return;
+ }
+ }
+
Ref<InputEventScreenDrag> drag_event = p_event;
if (drag_event.is_valid()) {