[mutter/cherry-pick-71c3f4af] x11: Update X11 focus before updating MetaDisplay focus
- From: Iain Lane <iainl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/cherry-pick-71c3f4af] x11: Update X11 focus before updating MetaDisplay focus
- Date: Thu, 24 Oct 2019 15:53:14 +0000 (UTC)
commit ef2f5f07f098d67d8fd1bba76d1df18d62daeb81
Author: Carlos Garnacho <carlosg gnome org>
Date: Tue Oct 22 12:17:40 2019 +0000
x11: Update X11 focus before updating MetaDisplay focus
In a similar vein to commit 8fd55fef853. 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: https://gitlab.gnome.org/GNOME/gnome-shell/issues/1607
https://gitlab.gnome.org/GNOME/mutter/merge_requests/876
(cherry picked from commit 71c3f4af3196b77fb52f395238f0704e7fa4d273)
src/x11/meta-x11-display.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
---
diff --git a/src/x11/meta-x11-display.c b/src/x11/meta-x11-display.c
index 3ae5b3d8d..1aebaa961 100644
--- a/src/x11/meta-x11-display.c
+++ b/src/x11/meta-x11-display.c
@@ -1928,10 +1928,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 *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]