wmii

git clone git://oldgit.suckless.org/wmii/
Log | Files | Refs | README | LICENSE

commit 86059e16d2f518d9c8cd3c594d1d590d6850ccad
parent 652ecd53c7b0cfdc40d0e724606ceb4e95572268
Author: Kris Maglione <jg@suckless.org>
Date:   Thu, 20 Mar 2008 15:35:59 -0400

Support WM_TAKE_FOCUS.

Diffstat:
cmd/wmii/client.c | 30++++++++++++++++--------------
1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/cmd/wmii/client.c b/cmd/wmii/client.c @@ -470,27 +470,29 @@ focus(Client *c, bool user) { void client_focus(Client *c) { static long id; + long _id; flushevents(FocusChangeMask, true); - Dprint(DFocus, "client_focus([%C]%s) %ld\n", c, clientname(c), id++); + _id = id++ % 99; + Dprint(DFocus, "client_focus([%C]%s) %ld\n", c, clientname(c), _id); - if(c) { - if(c->noinput) - return; - if(c->group) - c->group->client = c; - } + if(c && c->group) + c->group->client = c; sync(); flushevents(FocusChangeMask, true); - Dprint(DFocus, "client_focus([%C]%s) %ld\n", c, clientname(c), id); + + Dprint(DFocus, "\t%02d [%C]%s\n\t=> [%C]%s\n", + _id, + screen->focus, clientname(screen->focus), + c, clientname(c)); if(screen->focus != c) { - Dprint(DFocus, "\t[%C]%s => [%C]%s\n", - screen->focus, clientname(screen->focus), - c, clientname(c)); - if(c) - setfocus(&c->w, RevertToParent); - else + if(c) { + if(c->proto & ProtoTakeFocus) + client_message(c, "WM_TAKE_FOCUS", 0); + else if(!c->noinput) + setfocus(&c->w, RevertToParent); + }else setfocus(screen->barwin, RevertToParent); event("ClientFocus %C\n", c);