summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <rverschelde@gmail.com>2018-12-14 21:25:33 +0100
committerGitHub <noreply@github.com>2018-12-14 21:25:33 +0100
commit48fc70e3f70076ff31e4aa4682ff8c4ad8074e14 (patch)
treeefb479fbd2e366d6d68771d8ba108de026c9c014
parent85617535742e638532d7375d9ff17f3102ce8ca7 (diff)
parent7491e910f3ac689d920fbf2fa26ad3d1d909e744 (diff)
Merge pull request #23312 from lethiandev/fix-touch-release-gui-input
Fix touch release event on _gui_input
-rw-r--r--scene/main/viewport.cpp7
-rw-r--r--scene/main/viewport.h1
2 files changed, 5 insertions, 3 deletions
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp
index 5b1c2d8020..b220df6ce1 100644
--- a/scene/main/viewport.cpp
+++ b/scene/main/viewport.cpp
@@ -1727,6 +1727,7 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
gui.mouse_focus = _gui_find_control(pos);
gui.mouse_focus_mask = 1 << (mb->get_button_index() - 1);
+ gui.last_mouse_focus = gui.mouse_focus;
if (!gui.mouse_focus) {
return;
@@ -2114,14 +2115,14 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
set_input_as_handled();
return;
}
- } else if (gui.mouse_focus) {
+ } else if (touch_event->get_index() == 0 && gui.last_mouse_focus) {
- if (gui.mouse_focus->can_process()) {
+ if (gui.last_mouse_focus->can_process()) {
touch_event = touch_event->xformed_by(Transform2D()); //make a copy
touch_event->set_position(gui.focus_inv_xform.xform(pos));
- _gui_call_input(gui.mouse_focus, touch_event);
+ _gui_call_input(gui.last_mouse_focus, touch_event);
}
set_input_as_handled();
return;
diff --git a/scene/main/viewport.h b/scene/main/viewport.h
index 278350b1c9..6b6ca3b7db 100644
--- a/scene/main/viewport.h
+++ b/scene/main/viewport.h
@@ -271,6 +271,7 @@ private:
bool key_event_accepted;
Control *mouse_focus;
+ Control *last_mouse_focus;
Control *mouse_click_grabber;
int mouse_focus_mask;
Control *key_focus;