diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2022-03-28 20:21:28 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-28 20:21:28 +0200 |
commit | 2e8510595996478524e5d8ed48d90318f4a56777 (patch) | |
tree | 415a45b58f68e2e029fd7153d228d20345e768d0 /scene | |
parent | 4799009a0fa21a46a816fdf146d99669720fe902 (diff) | |
parent | d8a3d4b9da4f2a98befc793ff53b859aa8e6c19e (diff) |
Merge pull request #59555 from Sauermann/fix-mouseover-drag
Diffstat (limited to 'scene')
-rw-r--r-- | scene/main/viewport.cpp | 31 |
1 files changed, 5 insertions, 26 deletions
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index 0c7a9fda4a..a9138e13b2 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -1603,29 +1603,6 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) { _gui_call_input(mouse_focus, mb); } - // In case the mouse was released after for example dragging a scrollbar, - // check whether the current control is different from the stored one. If - // it is different, rather than wait for it to be updated the next time the - // mouse is moved, notify the control so that it can e.g. drop the highlight. - // This code is duplicated from the mm.is_valid()-case further below. - Control *over = nullptr; - if (gui.mouse_focus) { - over = gui.mouse_focus; - } else { - over = gui_find_control(mpos); - } - - if (gui.mouse_focus_mask == MouseButton::NONE && over != gui.mouse_over) { - _drop_mouse_over(); - _gui_cancel_tooltip(); - - if (over) { - _gui_call_notification(over, Control::NOTIFICATION_MOUSE_ENTER); - } - } - - gui.mouse_over = over; - set_input_as_handled(); } } @@ -1685,9 +1662,7 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) { } Control *over = nullptr; - if (gui.mouse_focus) { - over = gui.mouse_focus; - } else if (gui.mouse_in_viewport) { + if (gui.mouse_in_viewport) { over = gui_find_control(mpos); } @@ -1701,6 +1676,10 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) { } } + if (gui.mouse_focus) { + over = gui.mouse_focus; + } + DisplayServer::CursorShape ds_cursor_shape = (DisplayServer::CursorShape)Input::get_singleton()->get_default_cursor_shape(); if (over) { |