applied Peter Hartlich's togglemax patch to allow toggling tiled clients to maximum
authorAnselm R. Garbe <garbeam@gmail.com>
Tue, 18 Sep 2007 19:04:50 +0200
changeset 1002 5cc2be8efeb4
parent 1001 2477f818215c
child 1003 19d4ccea9745
applied Peter Hartlich's togglemax patch to allow toggling tiled clients to maximum
dwm.1
dwm.c
--- a/dwm.1	Mon Sep 17 16:42:37 2007 +0200
+++ b/dwm.1	Tue Sep 18 19:04:50 2007 +0200
@@ -75,7 +75,7 @@
 Increases the master area width about 5% (tiled layout only).
 .TP
 .B Mod1\-m
-Toggles maximization of current window (floating layout only).
+Toggles maximization of current window.
 .TP
 .B Mod1\-Shift\-[1..n]
 Apply
--- a/dwm.c	Mon Sep 17 16:42:37 2007 +0200
+++ b/dwm.c	Tue Sep 18 19:04:50 2007 +0200
@@ -64,7 +64,7 @@
 	int minax, maxax, minay, maxay;
 	long flags; 
 	unsigned int border, oldborder;
-	Bool isbanned, isfixed, ismax, isfloating;
+	Bool isbanned, isfixed, ismax, isfloating, wasfloating;
 	Bool *tags;
 	Client *next;
 	Client *prev;
@@ -1627,17 +1627,26 @@
 togglemax(const char *arg) {
 	XEvent ev;
 
-	if(!sel || (!isarrange(floating) && !sel->isfloating) || sel->isfixed)
+	if(!sel || sel->isfixed)
 		return;
 	if((sel->ismax = !sel->ismax)) {
+		if(isarrange(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
+	else {
 		resize(sel, sel->rx, sel->ry, sel->rw, sel->rh, True);
+		if (!sel->wasfloating)
+			togglefloating(NULL);
+	}
 	drawbar();
 	while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
 }