Well, I decided to apply this patch to mainstream dwm after a while of careful testing.
Regards, Anselm On Mon, Sep 17, 2007 at 01:04:30PM +0200, Peter Hartlich wrote: > 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)); > } -- Anselm R. Garbe >< http://www.suckless.org/ >< GPG key: 0D73F361