wmii

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

commit 379a3f711451dd770400c56fb8adcaf3d2943aec
parent 221ac73ebef3156645a645c2ff2241863bbf653a
Author: sqweek <sqweek@gmail.com>
Date:   Mon,  8 Oct 2007 02:03:02 +0800

Attempt to fix dosbox/SDL focus issues.

Diffstat:
cmd/wmii/client.c | 7++++++-
cmd/wmii/x11.c | 6+++++-
2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/cmd/wmii/client.c b/cmd/wmii/client.c @@ -330,7 +330,10 @@ focus_client(Client *c) { Dprint("focus_client(%p[%C]) => %s\n", c, c, clientname(c)); - if((c == nil || !c->noinput) && screen->focus != c) { + if (screen->focus == c) + return; + + if(c == nil || !c->noinput) { Dprint("\t%s => %s\n", clientname(screen->focus), clientname(c)); if(c) @@ -342,6 +345,8 @@ focus_client(Client *c) { XSync(display, False); flushevents(FocusChangeMask, True); + } else if(c && c->noinput) { + setfocus(nil, RevertToParent); } } diff --git a/cmd/wmii/x11.c b/cmd/wmii/x11.c @@ -662,7 +662,11 @@ gettextproperty(Window *w, char *name) { void setfocus(Window *w, int mode) { - XSetInputFocus(display, w->w, mode, CurrentTime); + if(w) { + XSetInputFocus(display, w->w, mode, CurrentTime); + } else { /* "relinquish" focus */ + XSetInputFocus(display, PointerRoot, mode, CurrentTime); + } } /* Mouse */