Fix that the focus-out notification got sent deferred
Currently the window receives a focus-out notification, directly after it popup, because currently the signal is sent deferred. The original intention was that the previously focused window must receive a focus-out notification. This change makes the notification more precise by only sending the focus-out to the previously focused window.
This commit is contained in:
parent
a83eb16fba
commit
8cdab04d7f
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue