summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2013-10-16 22:33:47 -0400
committerJasper St. Pierre <jstpierre@mecheye.net>2013-12-04 11:09:57 -0500
commit844f4e9348e29be52ded19d83fdbd1e5e9ce5529 (patch)
tree61d35026fb790fc3316a0b046a238413eae03a38
parent5cfc1461a1a250b54734e1a710537b1b7537d8a7 (diff)
display: Don't focus the no-focus-window when sending WM_TAKE_FOCUS to a globally active window
Clients like on-screen keyboards try not to take focus when the user clicks on their window by setting the Input hint to false. However, due to GTK+ and GDK bugs, the public API for setting the Input hint to false don't remove WM_TAKE_FOCUS from WM_PROTOCOLS, unintentionally putting them into Globally Active mode. These clients also expect that since they don't want to take focus, they want the focus to remain on the existing window. In this case, for clients like on-screen keyboards, it's so they can send synthesized keyboard events to the focused window. https://bugzilla.gnome.org/show_bug.cgi?id=710296
-rw-r--r--src/core/display.c19
1 files changed, 0 insertions, 19 deletions
diff --git a/src/core/display.c b/src/core/display.c
index 722fddd7..70c5e2b7 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -5808,25 +5808,6 @@ meta_display_request_take_focus (MetaDisplay *display,
meta_topic (META_DEBUG_FOCUS, "WM_TAKE_FOCUS(%s, %u)\n",
window->desc, timestamp);
- if (window != display->focus_window)
- {
- /* The "Globally Active Input" window case, where the window
- * doesn't want us to call XSetInputFocus on it, but does
- * want us to send a WM_TAKE_FOCUS.
- *
- * We can't just set display->focus_window to @window, since we
- * we don't know when (or even if) the window will actually take
- * focus, so we could end up being wrong for arbitrarily long.
- * But we also can't leave it set to the current window, or else
- * bug #597352 would come back. So we focus the no_focus_window
- * now (and set display->focus_window to that), send the
- * WM_TAKE_FOCUS, and then just forget about @window
- * until/unless we get a FocusIn.
- */
- meta_display_focus_the_no_focus_window (display,
- window->screen,
- timestamp);
- }
meta_window_send_icccm_message (window,
display->atom_WM_TAKE_FOCUS,
timestamp);