summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbruvzg <7645683+bruvzg@users.noreply.github.com>2024-06-08 19:08:10 +0300
committerbruvzg <7645683+bruvzg@users.noreply.github.com>2024-06-10 18:43:01 +0300
commit768fd1eacba427f08b0896aa641c27846b9eb185 (patch)
treed6b3304cf7d967d229872f335595a0b409410e5c
parent5241d30bfa223ed45784e32d8143d20a98a8d862 (diff)
downloadredot-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.cpp4
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);