Hi,

> http://s01.de/~gottox/hg/dwm/rev/d3c3a8018349

A port of that + http://s01.de/~gottox/hg/dwm/rev/0c589f7247e6
is attached. Thanks Gottox!

Regards,
Peter
diff --git a/dwm.c b/dwm.c
index 77a91ac..133f420 100644
--- a/dwm.c
+++ b/dwm.c
@@ -86,7 +86,7 @@ struct Client {
        int basew, baseh, incw, inch, maxw, maxh, minw, minh;
        int bw, oldbw;
        unsigned int tags;
-       Bool isfixed, isfloating, isurgent;
+       Bool isfixed, isfloating, isurgent, isfocusable;
        Client *next;
        Client *snext;
        Window win;
@@ -627,7 +627,8 @@ focus(Client *c) {
                attachstack(c);
                grabbuttons(c, True);
                XSetWindowBorder(dpy, c->win, dc.sel[ColBorder]);
-               XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
+               if(c->isfocusable)
+                       XSetInputFocus(dpy, c->win, RevertToPointerRoot, 
CurrentTime);
        }
        else
                XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
@@ -869,6 +870,7 @@ manage(Window w, XWindowAttributes *wa) {
        c->w = wa->width;
        c->h = wa->height;
        c->oldbw = wa->border_width;
+       c->isfocusable = True;
        if(c->w == sw && c->h == sh) {
                c->x = sx;
                c->y = sy;
@@ -890,6 +892,7 @@ manage(Window w, XWindowAttributes *wa) {
        XSetWindowBorder(dpy, w, dc.norm[ColBorder]);
        configure(c); /* propagates border_width, if size doesn't change */
        updatesizehints(c);
+       updatewmhints(c);
        XSelectInput(dpy, w, 
EnterWindowMask|FocusChangeMask|PropertyChangeMask|StructureNotifyMask);
        grabbuttons(c, False);
        updatetitle(c);
@@ -1637,6 +1640,7 @@ updatewmhints(Client *c) {
                }
                else
                        c->isurgent = (wmh->flags & XUrgencyHint) ? True : 
False;
+               c->isfocusable = !(wmh->flags & InputHint) || wmh->input;
 
                XFree(wmh);
        }

Reply via email to