X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=client.c;h=9b91ab65df2fdbaefcd907893f6e6cad926a4f94;hb=92e55c7c53cb808b584982ac8f6d69112d713fab;hp=f4ed1a067f860bc95c215919cc82a35a7d2cdbf2;hpb=8cc7f3bace087dfb024a23115c211d82b35614ae;p=dwm.git diff --git a/client.c b/client.c index f4ed1a0..9b91ab6 100644 --- 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); @@ -58,6 +58,8 @@ focus(Client *c) drawtitle(c); XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); XSync(dpy, False); + XChangeProperty(dpy, root, netatom[NetActiveWindow], XA_WINDOW, 32, + PropModeReplace, (unsigned char *)&c->win, 1); while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); } @@ -211,6 +213,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 +247,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 +452,7 @@ unmanage(Client *c) if(!sel) sel = clients; } + free(c->tags); free(c); XSync(dpy, False); @@ -437,6 +461,9 @@ unmanage(Client *c) arrange(NULL); if(sel) focus(sel); + else + XChangeProperty(dpy, root, netatom[NetActiveWindow], XA_WINDOW, 32, + PropModeReplace, (unsigned char *)NULL, 1); } void @@ -444,12 +471,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 */