about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--config.def.h2
-rw-r--r--dwm.c64
2 files changed, 24 insertions, 42 deletions
diff --git a/config.def.h b/config.def.h
index ddecedd..541e405 100644
--- a/config.def.h
+++ b/config.def.h
@@ -20,7 +20,7 @@ Rule rules[] = {
 
 /* geometries, s{x,y,w,h} and bh are already initualized here */
 /*   func name  bx  by  bw  wx  wy  ww     wh  mx  my       mw  mh     tx  ty     tw  th  mox moy mow moh */
-double mfact = 0.55;
+#define MFACT			0.55	/* master width factor [0.1 .. 0.9] */
 DEFGEOM(single,  0,  0, sw,  0, bh, sw, sh-bh, wx, wy, mfact*sw, wh, mx+mw, wy, ww-mw, wh,  wx, wy, ww, wh)
 DEFGEOM(dual,    0,  0,1280, 0, bh, ww, wh-bh, wx, wy, 1280,800-bh,  1280,  0, ww-mw, sh,  mx, my, mw, mh)
 
diff --git a/dwm.c b/dwm.c
index 1080d2d..91b0149 100644
--- a/dwm.c
+++ b/dwm.c
@@ -212,6 +212,7 @@ char stext[256], buf[256];
 int screen, sx, sy, sw, sh;
 int (*xerrorxlib)(Display *, XErrorEvent *);
 int bx, by, bw, bh, blw, bgw, mx, my, mw, mh, mox, moy, mow, moh, tx, ty, tw, th, wx, wy, ww, wh;
+double mfact;
 unsigned int numlockmask = 0;
 void (*handler[LASTEvent]) (XEvent *) = {
 	[ButtonPress] = buttonpress,
@@ -805,39 +806,20 @@ gettextprop(Window w, Atom atom, char *text, unsigned int size) {
 
 void
 grabbuttons(Client *c, Bool focused) {
-	XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
+	int i, j;
+	unsigned int buttons[]   = { Button1, Button2, Button3 };
+	unsigned int modifiers[] = { MODKEY, MODKEY|LockMask, MODKEY|numlockmask,
+	                             MODKEY|numlockmask|LockMask} ;
 
-	if(focused) {
-		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);
-	}
+	XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
+	if(focused)
+		for(i = 0; i < LENGTH(buttons); i++)
+			for(j = 0; j < LENGTH(modifiers); j++)
+				XGrabButton(dpy, buttons[i], modifiers[j], c->win, False,
+				            BUTTONMASK, GrabModeAsync, GrabModeSync, None, None);
 	else
-		XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, BUTTONMASK,
-				GrabModeAsync, GrabModeSync, None, None);
+		XGrabButton(dpy, AnyButton, AnyModifier, c->win, False,
+		            BUTTONMASK, GrabModeAsync, GrabModeSync, None, None);
 }
 
 void
@@ -1467,20 +1449,19 @@ setlayout(const char *arg) {
 
 void
 setmfact(const char *arg) {
-	double delta;
+	double d;
 
-	if(!arg || lt->isfloating)
+	if(lt->isfloating)
 		return;
-	delta = strtod(arg, NULL);
-	if(arg[0] == '-' || arg[0] == '+') {
-		if(mfact + delta < 0.1 || mfact + delta > 0.9)
-			return;
-		mfact += delta;
-	}
+	if(!arg)
+		mfact = MFACT;
 	else {
-		if(delta < 0.1 || delta > 0.9)
+		d = strtod(arg, NULL);
+		if(arg[0] == '-' || arg[0] == '+')
+			d += mfact;
+		if(d < 0.1 || d > 0.9)
 			return;
-		mfact = delta;
+		mfact = d;
 	}
 	setgeom(geom->symbol);
 }
@@ -1501,6 +1482,7 @@ setup(void) {
 	sw = DisplayWidth(dpy, screen);
 	sh = DisplayHeight(dpy, screen);
 	bh = dc.font.height + 2;
+	mfact = MFACT;
 	geom = &geoms[0];
 	geom->apply();