summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/workspace.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/core/workspace.c b/src/core/workspace.c
index a80560b7b..a6edb5fff 100644
--- a/src/core/workspace.c
+++ b/src/core/workspace.c
@@ -1367,6 +1367,14 @@ try_to_set_focus_and_check (MetaWindow *window,
{
meta_window_focus (window, timestamp);
+ /* meta_focus_window() will not change focus for clients using the
+ * "globally active input" model of input handling, hence defeating
+ * the assumption that focus should be changed for such windows.
+ * See https://tronche.com/gui/x/icccm/sec-4.html#s-4.1.7
+ */
+ if (meta_window_is_focus_async (window))
+ return TRUE;
+
/* meta_window_focus() does not guarantee that focus will end up
* where we expect, it can fail for various reasons, better check
* it did not actually changed or even left focus to the window we