Hi,

Here's the patch to allow calling togglemax() on tiled windows, ported
to the new dwm.c. I've used Abel Darc's variable name wasfloating, which
is less clumsy than my rtogglefloating.

Regards,
Peter
diff -upr dwm~/dwm.1 dwm/dwm.1
--- dwm~/dwm.1  2007-09-17 07:12:03.000000000 +0200
+++ dwm/dwm.1   2007-09-17 07:15:47.000000000 +0200
@@ -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 -upr dwm~/dwm.c dwm/dwm.c
--- dwm~/dwm.c  2007-09-17 07:12:03.000000000 +0200
+++ dwm/dwm.c   2007-09-17 09:46:52.000000000 +0200
@@ -67,7 +67,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;
@@ -1630,17 +1630,26 @@ static 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));
 }

Reply via email to