Commit 71c3f4af authored by Carlos Garnacho's avatar Carlos Garnacho

x11: Update X11 focus before updating MetaDisplay focus

In a similar vein to commit 8fd55fef. This notably failed when setting
the focus on the stage (eg. to redirect key events to Clutter actors).
Deeper in MetaDisplay focus updating machinery, it would check
meta_stage_is_focused() which would still return FALSE at the time it's
called.

This would not typically have side effects, but our "App does not respond"
dialogs see the focus change under their feet, so they try to bring
themselves to focus again. This results in a feedback loop.

Changing the order results in later checks on the X11 POV of the focus
being correct, so focus is not mistakenly stolen from the close dialog,
and it actually succeeds in keeping the key focus.

Fixes: gnome-shell#1607

!876
parent 30783949
Pipeline #125285 passed with stages
in 5 minutes and 50 seconds
......@@ -1934,10 +1934,10 @@ meta_x11_display_set_input_focus_xwindow (MetaX11Display *x11_display,
{
gulong serial;
meta_display_unset_input_focus (x11_display->display, timestamp);
serial = XNextRequest (x11_display->xdisplay);
meta_x11_display_set_input_focus_internal (x11_display, window, timestamp);
meta_x11_display_update_focus_window (x11_display, window, serial, TRUE);
meta_display_unset_input_focus (x11_display->display, timestamp);
}
static MetaX11DisplayLogicalMonitorData *
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment