X-Git-Url: https://git.xinqibao.xyz/dwm.git/blobdiff_plain/c31648d15d7a9bd0c7915989212d9cf0d75cdf1f..f2512243f494915fe91ebb5e67ac94abd5b528c6:/event.c?ds=sidebyside

diff --git a/event.c b/event.c
index ad4e271..4bedf18 100644
--- a/event.c
+++ b/event.c
@@ -16,7 +16,7 @@ typedef struct {
 
 KEYS
 
-#define CLEANMASK(mask) (mask & ~(numlockmask | LockMask))
+#define CLEANMASK(mask)		(mask & ~(numlockmask | LockMask))
 #define MOUSEMASK		(BUTTONMASK | PointerMotionMask)
 
 static Client *
@@ -138,25 +138,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 +170,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 +216,7 @@ configurenotify(XEvent *e) {
 		dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen));
 		XResizeWindow(dpy, barwin, sw, bh);
 		updatebarpos();
-		lt->arrange();
+		arrange();
 	}
 }
 
@@ -321,7 +317,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 +336,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);
+	}
 }
 
 /* extern */