dwm

my fork of dwm
Index Commits Files Refs README LICENSE
commit 08c2d924809ca6e397126532c52955c3c04237e2
parent fe2775a15ba2d4900788c57194da2bad3d19cfaf
Author: Anselm R. Garbe <garbeam@gmail.com>
Date:   Tue, 18 Sep 2007 19:04:50 +0200

applied Peter Hartlich's togglemax patch to allow toggling tiled clients to maximum
Diffstat:
Mdwm.1 | 2+-
Mdwm.c | 15++++++++++++---
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/dwm.1 b/dwm.1
@@ -75,7 +75,7 @@ Focus previous window.
 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
diff --git a/dwm.c b/dwm.c
@@ -64,7 +64,7 @@ struct Client {
     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 @@ void
 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));
 }