Fix mouse entered notifications

Make sure, that a windows initial state is `mouse_in_viewport = false`.
This makes sure, that the mouse entered notification is sent when the
mouse hovers a window for the first time.

For embedded Windows, `NOTIFICATION_WM_MOUSE_ENTER` is currently sent
twice in a row. Remove one of the places where it is sent.
`Window::_update_mouse_over()` is the correct one, because there it is
also called for native windows.
This commit is contained in:
Markus Sauermann 2024-02-29 00:54:37 +01:00
parent df78c0636d
commit d259f979f5
2 changed files with 1 additions and 4 deletions

View File

@ -3158,9 +3158,6 @@ void Viewport::_update_mouse_over(Vector2 p_pos) {
gui.subwindow_over->_mouse_leave_viewport();
}
gui.subwindow_over = sw;
if (!sw->is_input_disabled()) {
sw->_propagate_window_notification(sw, NOTIFICATION_WM_MOUSE_ENTER);
}
}
if (!sw->is_input_disabled()) {
sw->_update_mouse_over(sw->get_final_transform().affine_inverse().xform(p_pos - sw->get_position()));

View File

@ -352,7 +352,7 @@ private:
struct GUI {
bool forced_mouse_focus = false; //used for menu buttons
bool mouse_in_viewport = true;
bool mouse_in_viewport = false;
bool key_event_accepted = false;
HashMap<int, ObjectID> touch_focus;
Control *mouse_focus = nullptr;