diff options
author | Markus Sauermann <6299227+Sauermann@users.noreply.github.com> | 2022-10-14 10:29:28 +0200 |
---|---|---|
committer | Markus Sauermann <6299227+Sauermann@users.noreply.github.com> | 2022-10-14 12:51:45 +0200 |
commit | b1d6b346626c2e6199306d45c77231e383fe54a0 (patch) | |
tree | 98e0a364b6c66770ffe9046b72f07c3147e397a4 /scene/main | |
parent | cbdd9f3bbf93fd10c03b0d8a30cf596b8f3ca308 (diff) |
Always update Viewport's last_mosue_position
When the mouse cursor is over a embedded Window, the Viewport's
last_mouse_position did not get updated.
This patch makes sure that the update happens on every InputEventMouse.
Document canvas layer of embedded Windows.
Diffstat (limited to 'scene/main')
-rw-r--r-- | scene/main/viewport.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index f7a515dc1d..f66337a2f9 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -1490,7 +1490,6 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) { gui.key_event_accepted = false; Point2 mpos = mb->get_position(); - gui.last_mouse_pos = mpos; if (mb->is_pressed()) { Size2 pos = mpos; if (gui.mouse_focus_mask != MouseButton::NONE) { @@ -1644,8 +1643,6 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) { gui.key_event_accepted = false; Point2 mpos = mm->get_position(); - gui.last_mouse_pos = mpos; - // Drag & drop. if (!gui.drag_attempted && gui.mouse_focus && (mm->get_button_mask() & MouseButton::MASK_LEFT) != MouseButton::NONE) { gui.drag_accum += mm->get_relative(); @@ -2759,6 +2756,11 @@ void Viewport::push_input(const Ref<InputEvent> &p_event, bool p_local_coords) { ev = p_event; } + Ref<InputEventMouse> me = ev; + if (me.is_valid()) { + gui.last_mouse_pos = me->get_position(); + } + if (is_embedding_subwindows() && _sub_windows_forward_input(ev)) { set_input_as_handled(); return; |