diff options
author | bruvzg <7645683+bruvzg@users.noreply.github.com> | 2024-06-08 19:08:10 +0300 |
---|---|---|
committer | bruvzg <7645683+bruvzg@users.noreply.github.com> | 2024-06-10 18:43:01 +0300 |
commit | 768fd1eacba427f08b0896aa641c27846b9eb185 (patch) | |
tree | d6b3304cf7d967d229872f335595a0b409410e5c | |
parent | 5241d30bfa223ed45784e32d8143d20a98a8d862 (diff) | |
download | redot-engine-768fd1eacba427f08b0896aa641c27846b9eb185.tar.gz |
[Window] Fix mouse hover state of the main window when mouse enter event was sent before setting callbacks.
-rw-r--r-- | scene/main/window.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
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); |