X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=client.c;h=434a93b695bca5d0a94dcc77b330f0396741208a;hb=080a38d62d18be2ab98f66ed190d3d9e3463fec9;hp=4afa70526c6391f356859984899f9fb0c7a63199;hpb=04eb016e782743ec88f150ec6f5389703bed3ce2;p=dwm.git diff --git a/client.c b/client.c index 4afa705..434a93b 100644 --- a/client.c +++ b/client.c @@ -73,8 +73,8 @@ focusnext(Arg *arg) if(sel->ismax) togglemax(NULL); - if(!(c = getnext(sel->next, tsel))) - c = getnext(clients, tsel); + if(!(c = getnext(sel->next))) + c = getnext(clients); if(c) { higher(c); focus(c); @@ -191,7 +191,7 @@ killclient(Arg *arg) { if(!sel) return; - if(sel->proto & WM_PROTOCOL_DELWIN) + if(sel->proto & PROTODELWIN) sendevent(sel->win, wmatom[WMProtocols], wmatom[WMDelete]); else XKillClient(dpy, sel->win); @@ -244,11 +244,11 @@ manage(Window w, XWindowAttributes *wa) c->next = clients; clients = c; - XGrabButton(dpy, Button1, MODKEY, c->win, False, ButtonPressMask, + XGrabButton(dpy, Button1, MODKEY, c->win, False, BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); - XGrabButton(dpy, Button2, MODKEY, c->win, False, ButtonPressMask, + XGrabButton(dpy, Button2, MODKEY, c->win, False, BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); - XGrabButton(dpy, Button3, MODKEY, c->win, False, ButtonPressMask, + XGrabButton(dpy, Button3, MODKEY, c->win, False, BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); if(!c->isfloat) @@ -260,36 +260,10 @@ manage(Window w, XWindowAttributes *wa) arrange(NULL); /* mapping the window now prevents flicker */ - if(c->tags[tsel]) { - XMapRaised(dpy, c->win); - XMapRaised(dpy, c->title); + XMapRaised(dpy, c->win); + XMapRaised(dpy, c->title); + if(c->tags[tsel]) focus(c); - } - else { - XMapRaised(dpy, c->win); - XMapRaised(dpy, c->title); - - } -} - -void -pop(Client *c) -{ - Client **l; - - for(l = &clients; *l && *l != c; l = &(*l)->next); - if(c->prev) - c->prev->next = c->next; - if(c->next) - c->next->prev = c->prev; - *l = c->next; - - c->prev = NULL; - if(clients) - clients->prev = c; - c->next = clients; - clients = c; - arrange(NULL); } void @@ -442,22 +416,20 @@ togglemax(Arg *arg) void unmanage(Client *c) { - Client **l; - XGrabServer(dpy); XSetErrorHandler(xerrordummy); XUngrabButton(dpy, AnyButton, AnyModifier, c->win); XDestroyWindow(dpy, c->title); - for(l = &clients; *l && *l != c; l = &(*l)->next); if(c->prev) c->prev->next = c->next; if(c->next) c->next->prev = c->prev; - *l = c->next; + if(c == clients) + clients = c->next; if(sel == c) { - sel = getnext(c->next, tsel); + sel = getnext(c->next); if(!sel) sel = getprev(c->prev); if(!sel) @@ -481,11 +453,21 @@ zoom(Arg *arg) if(!sel) return; - if(sel == getnext(clients, tsel) && sel->next) { - if((c = getnext(sel->next, tsel))) + if(sel == getnext(clients) && sel->next) { + if((c = getnext(sel->next))) sel = c; } - pop(sel); + /* pop */ + if(sel->prev) + sel->prev->next = sel->next; + if(sel->next) + sel->next->prev = sel->prev; + sel->prev = NULL; + if(clients) + clients->prev = sel; + sel->next = clients; + clients = sel; + arrange(NULL); focus(sel); }