JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
removed NET_ACTIVE_WINDOW handling
[dwm.git] / client.c
index f4ed1a0..f92df83 100644 (file)
--- a/client.c
+++ b/client.c
@@ -16,7 +16,7 @@ resizetitle(Client *c)
        int i;
 
        c->tw = 0;
-       for(i = 0; i < TLast; i++)
+       for(i = 0; i < ntags; i++)
                if(c->tags[i])
                        c->tw += textw(tags[i]);
        c->tw += textw(c->name);
@@ -211,6 +211,7 @@ manage(Window w, XWindowAttributes *wa)
        XSetWindowAttributes twa;
 
        c = emallocz(sizeof(Client));
+       c->tags = emallocz(ntags * sizeof(Bool));
        c->win = w;
        c->x = c->tx = wa->x;
        c->y = c->ty = wa->y;
@@ -244,10 +245,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)
@@ -429,6 +450,7 @@ unmanage(Client *c)
                if(!sel)
                        sel = clients;
        }
+       free(c->tags);
        free(c);
 
        XSync(dpy, False);
@@ -444,12 +466,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 */