JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
applied sumik's multihead patch
[dwm.git] / client.c
index 91d031e..773b8f8 100644 (file)
--- a/client.c
+++ b/client.c
@@ -49,6 +49,8 @@ ban(Client *c)
 void
 focus(Client *c)
 {
+       if (!issel)
+               return;
        Client *old = sel;
        XEvent ev;
 
@@ -197,13 +199,6 @@ killclient(Arg *arg)
 }
 
 void
-lower(Client *c)
-{
-       XLowerWindow(dpy, c->title);
-       XLowerWindow(dpy, c->win);
-}
-
-void
 manage(Window w, XWindowAttributes *wa)
 {
        Client *c;
@@ -245,10 +240,30 @@ manage(Window w, XWindowAttributes *wa)
 
        XGrabButton(dpy, Button1, MODKEY, c->win, False, BUTTONMASK,
                        GrabModeAsync, GrabModeSync, None, None);
+       XGrabButton(dpy, Button1, MODKEY | LockMask, c->win, False, BUTTONMASK,
+                       GrabModeAsync, GrabModeSync, None, None);
+       XGrabButton(dpy, Button1, MODKEY | NUMLOCKMASK, c->win, False, BUTTONMASK,
+                       GrabModeAsync, GrabModeSync, None, None);
+       XGrabButton(dpy, Button1, MODKEY | NUMLOCKMASK | LockMask, c->win, False, BUTTONMASK,
+                       GrabModeAsync, GrabModeSync, None, None);
+
        XGrabButton(dpy, Button2, MODKEY, c->win, False, BUTTONMASK,
                        GrabModeAsync, GrabModeSync, None, None);
+       XGrabButton(dpy, Button2, MODKEY | LockMask, c->win, False, BUTTONMASK,
+                       GrabModeAsync, GrabModeSync, None, None);
+       XGrabButton(dpy, Button2, MODKEY | NUMLOCKMASK, c->win, False, BUTTONMASK,
+                       GrabModeAsync, GrabModeSync, None, None);
+       XGrabButton(dpy, Button2, MODKEY | NUMLOCKMASK | LockMask, c->win, False, BUTTONMASK,
+                       GrabModeAsync, GrabModeSync, None, None);
+
        XGrabButton(dpy, Button3, MODKEY, c->win, False, BUTTONMASK,
                        GrabModeAsync, GrabModeSync, None, None);
+       XGrabButton(dpy, Button3, MODKEY | LockMask, c->win, False, BUTTONMASK,
+                       GrabModeAsync, GrabModeSync, None, None);
+       XGrabButton(dpy, Button3, MODKEY | NUMLOCKMASK, c->win, False, BUTTONMASK,
+                       GrabModeAsync, GrabModeSync, None, None);
+       XGrabButton(dpy, Button3, MODKEY | NUMLOCKMASK | LockMask, c->win, False, BUTTONMASK,
+                       GrabModeAsync, GrabModeSync, None, None);
 
        settags(c);
        if(!c->isfloat)
@@ -446,12 +461,14 @@ zoom(Arg *arg)
 {
        Client *c;
 
-       if(!sel)
+       if(!sel || (arrange != dotile) || sel->isfloat)
                return;
 
-       if(sel == getnext(clients) && sel->next)  {
+       if(sel == getnext(clients))  {
                if((c = getnext(sel->next)))
                        sel = c;
+               else
+                       return;
        }
 
        /* pop */