simplified Mod-m
authorAnselm R. Garbe <garbeam@gmail.com>
Sun, 09 Dec 2007 13:39:29 +0100
changeset 1071 3303e2643918
parent 1070 dc37f0e022f7
child 1072 5a06b4b69479
simplified Mod-m
config.def.h
dwm.1
dwm.c
--- a/config.def.h	Sat Dec 08 20:11:56 2007 +0100
+++ b/config.def.h	Sun Dec 09 13:39:29 2007 +0100
@@ -46,7 +46,7 @@
 	{ MODKEY,			XK_k,		focusprev,	NULL },
 	{ MODKEY,			XK_h,		setmwfact,	"-0.05" },
 	{ MODKEY,			XK_l,		setmwfact,	"+0.05" },
-	{ MODKEY,			XK_m,		togglemax,	NULL },
+	{ MODKEY,			XK_m,		maximize,	NULL },
 	{ MODKEY,			XK_r,		reapply,	NULL },
 	{ MODKEY,			XK_Return,	zoom,		NULL },
 	{ MODKEY,			XK_Tab,		viewprevtag,	NULL },
--- a/dwm.1	Sat Dec 08 20:11:56 2007 +0100
+++ b/dwm.1	Sun Dec 09 13:39:29 2007 +0100
@@ -78,7 +78,7 @@
 Increases the master area width about 5% (tiled layout only).
 .TP
 .B Mod1\-m
-Toggles maximization of current window.
+Maximizes current window (floating layout/window only).
 .TP
 .B Mod1\-r
 Re-applies tagging rules to all windows.
--- a/dwm.c	Sat Dec 08 20:11:56 2007 +0100
+++ b/dwm.c	Sun Dec 09 13:39:29 2007 +0100
@@ -61,12 +61,11 @@
 struct Client {
 	char name[256];
 	int x, y, w, h;
-	int rx, ry, rw, rh; /* revert geometry */
 	int basew, baseh, incw, inch, maxw, maxh, minw, minh;
 	int minax, maxax, minay, maxay;
 	long flags;
 	unsigned int border, oldborder;
-	Bool isbanned, isfixed, ismax, isfloating, wasfloating;
+	Bool isbanned, isfixed, isfloating;
 	Bool *tags;
 	Client *next;
 	Client *prev;
@@ -157,6 +156,7 @@
 void manage(Window w, XWindowAttributes *wa);
 void mappingnotify(XEvent *e);
 void maprequest(XEvent *e);
+void maximize(const char *arg);
 void movemouse(Client *c);
 Client *nexttiled(Client *c);
 void propertynotify(XEvent *e);
@@ -178,7 +178,6 @@
 void tile(void);
 void togglebar(const char *arg);
 void togglefloating(const char *arg);
-void togglemax(const char *arg);
 void toggletag(const char *arg);
 void toggleview(const char *arg);
 void unban(Client *c);
@@ -466,7 +465,6 @@
 	XWindowChanges wc;
 
 	if((c = getclient(ev->window))) {
-		c->ismax = False;
 		if(ev->value_mask & CWBorderWidth)
 			c->border = ev->border_width;
 		if(c->isfixed || c->isfloating || (floating == layout->arrange)) {
@@ -563,7 +561,7 @@
 		dc.x = x;
 		if(sel) {
 			drawtext(sel->name, dc.sel);
-			drawsquare(sel->ismax, sel->isfloating, dc.sel);
+			drawsquare(False, sel->isfloating, dc.sel);
 		}
 		else
 			drawtext(NULL, dc.norm);
@@ -1079,6 +1077,13 @@
 }
 
 void
+maximize(const char *arg) {
+	if(!sel || (!sel->isfloating && layout->arrange != floating))
+		return;
+	resize(sel, wax, way, waw - 2 * sel->border, wah - 2 * sel->border, True);
+}
+
+void
 movemouse(Client *c) {
 	int x1, y1, ocx, ocy, di, nx, ny;
 	unsigned int dui;
@@ -1090,7 +1095,6 @@
 	if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync,
 			None, cursor[CurMove], CurrentTime) != GrabSuccess)
 		return;
-	c->ismax = False;
 	XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui);
 	for(;;) {
 		XMaskEvent(dpy, MOUSEMASK | ExposureMask | SubstructureRedirectMask, &ev);
@@ -1248,7 +1252,6 @@
 	if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync,
 			None, cursor[CurResize], CurrentTime) != GrabSuccess)
 		return;
-	c->ismax = False;
 	XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->border - 1, c->h + c->border - 1);
 	for(;;) {
 		XMaskEvent(dpy, MOUSEMASK | ExposureMask | SubstructureRedirectMask , &ev);
@@ -1609,7 +1612,6 @@
 	ny = way;
 	nw = 0; /* gcc stupidity requires this */
 	for(i = 0, c = mc = nexttiled(clients); c; c = nexttiled(c->next), i++) {
-		c->ismax = False;
 		if(i == 0) { /* master */
 			nw = mw - 2 * c->border;
 			nh = wah - 2 * c->border;
@@ -1655,34 +1657,6 @@
 }
 
 void
-togglemax(const char *arg) {
-	XEvent ev;
-
-	if(!sel || sel->isfixed)
-		return;
-	if((sel->ismax = !sel->ismax)) {
-		if((layout->arrange == floating) || sel->isfloating)
-			sel->wasfloating = True;
-		else {
-			togglefloating(NULL);
-			sel->wasfloating = False;
-		}
-		sel->rx = sel->x;
-		sel->ry = sel->y;
-		sel->rw = sel->w;
-		sel->rh = sel->h;
-		resize(sel, wax, way, waw - 2 * sel->border, wah - 2 * sel->border, True);
-	}
-	else {
-		resize(sel, sel->rx, sel->ry, sel->rw, sel->rh, True);
-		if(!sel->wasfloating)
-			togglefloating(NULL);
-	}
-	drawbar();
-	while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
-}
-
-void
 toggletag(const char *arg) {
 	unsigned int i, j;