summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--scene/main/window.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/scene/main/window.cpp b/scene/main/window.cpp
index e8395f59c9..eab280e67a 100644
--- a/scene/main/window.cpp
+++ b/scene/main/window.cpp
@@ -1624,7 +1624,15 @@ void Window::popup(const Rect2i &p_screen_rect) {
// Send a focus-out notification when opening a Window Manager Popup.
SceneTree *scene_tree = get_tree();
if (scene_tree) {
- scene_tree->notify_group_flags(SceneTree::GROUP_CALL_DEFERRED, "_viewports", NOTIFICATION_WM_WINDOW_FOCUS_OUT);
+ List<Node *> list;
+ scene_tree->get_nodes_in_group("_viewports", &list);
+ for (Node *n : list) {
+ Window *w = Object::cast_to<Window>(n);
+ if (w && !w->get_embedder() && w->has_focus()) {
+ w->_event_callback(DisplayServer::WINDOW_EVENT_FOCUS_OUT);
+ break;
+ }
+ }
}
}