From a7c7a05775c359c890b8a3a793d65ddab6a86322 Mon Sep 17 00:00:00 2001 From: Olivier Fourdan <fourdan.olivier@wanadoo.fr> Date: Fri, 12 Mar 2004 21:07:00 +0000 Subject: [PATCH] Fix for client not accepting focus (Old svn revision: 11629) --- src/client.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/client.c b/src/client.c index 3c61f1eb5..eb6db6035 100644 --- a/src/client.c +++ b/src/client.c @@ -4735,13 +4735,12 @@ clientAcceptFocus (Client * c) { return FALSE; } - /* then try ICCCM */ - else if (FLAG_TEST (c->wm_flags, WM_FLAG_TAKEFOCUS)) + if (!FLAG_TEST_ALL (c->wm_flags, WM_FLAG_INPUT | WM_FLAG_TAKEFOCUS)) { - return TRUE; + return FALSE; } - /* At last, use wmhints */ - return (FLAG_TEST (c->wm_flags, WM_FLAG_INPUT) ? TRUE : FALSE); + + return TRUE; } static inline void @@ -4870,12 +4869,18 @@ clientSetFocus (Client * c, unsigned short flags) { clientSortRing(c); } - XSetInputFocus (dpy, c->window, RevertToNone, CurrentTime); - XFlush (dpy); + + if (FLAG_TEST (c->wm_flags, WM_FLAG_INPUT)) + { + XSetInputFocus (dpy, c->window, RevertToNone, CurrentTime); + XFlush (dpy); + } + if (FLAG_TEST(c->wm_flags, WM_FLAG_TAKEFOCUS)) { sendClientMessage (c->window, wm_protocols, wm_takefocus, CurrentTime); } + if ((c->legacy_fullscreen) || FLAG_TEST(c->flags, CLIENT_FLAG_FULLSCREEN)) { clientSetLayer (c, WIN_LAYER_ABOVE_DOCK); -- GitLab