X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=event.c;h=b8a16a7260806c5274109444f4a7aab53706109e;hb=10d13f01ff764ba0e875adf5d2b83c49aa08d148;hp=ad4e271e328dbd975c4a43e4fcf93a8cc0289409;hpb=c31648d15d7a9bd0c7915989212d9cf0d75cdf1f;p=dwm.git diff --git a/event.c b/event.c index ad4e271..b8a16a7 100644 --- a/event.c +++ b/event.c @@ -4,6 +4,7 @@ #include #include #include +#include /* static */ @@ -16,7 +17,7 @@ typedef struct { KEYS -#define CLEANMASK(mask) (mask & ~(numlockmask | LockMask)) +#define CLEANMASK(mask) (mask & ~(numlockmask | LockMask)) #define MOUSEMASK (BUTTONMASK | PointerMotionMask) static Client * @@ -138,25 +139,21 @@ buttonpress(XEvent *e) { return; } } - if(ev->x < x + blw) - switch(ev->button) { - case Button1: - setlayout(NULL); - break; - } + if((ev->x < x + blw) && ev->button == Button1) + setlayout(NULL); } else if((c = getclient(ev->window))) { focus(c); if(CLEANMASK(ev->state) != MODKEY) return; - if(ev->button == Button1 && (lt->arrange == floating || c->isfloating)) { + if(ev->button == Button1 && (isfloating() || c->isfloating)) { restack(); movemouse(c); } else if(ev->button == Button2) zoom(NULL); else if(ev->button == Button3 - && (lt->arrange == floating || c->isfloating) && !c->isfixed) + && (isfloating() || c->isfloating) && !c->isfixed) { restack(); resizemouse(c); @@ -174,7 +171,7 @@ configurerequest(XEvent *e) { c->ismax = False; if(ev->value_mask & CWBorderWidth) c->border = ev->border_width; - if(c->isfixed || c->isfloating || (lt->arrange == floating)) { + if(c->isfixed || c->isfloating || isfloating()) { if(ev->value_mask & CWX) c->x = ev->x; if(ev->value_mask & CWY) @@ -220,7 +217,7 @@ configurenotify(XEvent *e) { dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen)); XResizeWindow(dpy, barwin, sw, bh); updatebarpos(); - lt->arrange(); + arrange(); } } @@ -230,7 +227,7 @@ destroynotify(XEvent *e) { XDestroyWindowEvent *ev = &e->xdestroywindow; if((c = getclient(ev->window))) - unmanage(c); + unmanage(c, WithdrawnState); } static void @@ -321,7 +318,7 @@ propertynotify(XEvent *e) { case XA_WM_TRANSIENT_FOR: XGetTransientForHint(dpy, c->win, &trans); if(!c->isfloating && (c->isfloating = (getclient(trans) != NULL))) - lt->arrange(); + arrange(); break; case XA_WM_NORMAL_HINTS: updatesizehints(c); @@ -340,8 +337,10 @@ unmapnotify(XEvent *e) { Client *c; XUnmapEvent *ev = &e->xunmap; - if((c = getclient(ev->window))) - unmanage(c); + if((c = getclient(ev->window)) && (ev->event == root)) { + if(ev->send_event || c->unmapped-- == 0) + unmanage(c, WithdrawnState); + } } /* extern */