Author: olivier
Date: 2008-06-15 11:30:14 +0000 (Sun, 15 Jun 2008)
New Revision: 27067
Modified:
xfwm4/trunk/src/focus.c
Log:
Set focus to the fallback window when relying only on TakeFocus to avoid a race
condition with the client application
Modified: xfwm4/trunk/src/focus.c
===================================================================
--- xfwm4/trunk/src/focus.c 2008-06-15 09:44:50 UTC (rev 27066)
+++ xfwm4/trunk/src/focus.c 2008-06-15 11:30:14 UTC (rev 27067)
@@ -595,9 +595,15 @@
}
clientUpdateOpacity (screen_info, c);
}
- else if (!client_focus)
+ else
{
- /* Hack to prevent loosing focus when all remaining windows won't
accept focus, see bug #1853 */
+ /*
+ * If we are relying only on the client application to take focus,
we need to set the focus
+ * explicitely on our own fallback window otherwise there is a
race condition between the
+ * application and the window manager. If the application does not
take focus before the
+ * the previously focused window is unmapped (when iconifying or
closing for example), the focus
+ * will be reverted to the root window and focus transition will
fail.
+ */
XSetInputFocus (myScreenGetXDisplay (screen_info),
screen_info->xfwm4_win, RevertToPointerRoot, timestamp);
}
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits