From 768fd1eacba427f08b0896aa641c27846b9eb185 Mon Sep 17 00:00:00 2001 From: bruvzg <7645683+bruvzg@users.noreply.github.com> Date: Sat, 8 Jun 2024 19:08:10 +0300 Subject: [PATCH] [Window] Fix mouse hover state of the main window when mouse enter event was sent before setting callbacks. --- scene/main/window.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scene/main/window.cpp b/scene/main/window.cpp index 39e5b6de33..7502f97e89 100644 --- a/scene/main/window.cpp +++ b/scene/main/window.cpp @@ -1354,6 +1354,10 @@ void Window::_notification(int p_what) { _update_window_size(); // Inform DisplayServer of minimum and maximum size. _update_viewport_size(); // Then feed back to the viewport. _update_window_callbacks(); + // Simulate mouse-enter event when mouse is over the window, since OS event might arrive before setting callbacks. + if (!mouse_in_window && Rect2(position, size).has_point(DisplayServer::get_singleton()->mouse_get_position())) { + _event_callback(DisplayServer::WINDOW_EVENT_MOUSE_ENTER); + } RS::get_singleton()->viewport_set_update_mode(get_viewport_rid(), RS::VIEWPORT_UPDATE_WHEN_VISIBLE); if (DisplayServer::get_singleton()->window_get_flag(DisplayServer::WindowFlags(FLAG_TRANSPARENT), window_id)) { set_transparent_background(true);