X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=layout.c;h=f3f8e26d3c2b52853be8d02bbf2e1be6b1000c2a;hb=141beb27041371672d54da7f541a3855fab0ac5b;hp=0865050b16d17308c98702b80ca61ae43a2e16b5;hpb=e45b3ced673e2de583c53e084cc071039d64ba4e;p=dwm.git diff --git a/layout.c b/layout.c index 0865050..f3f8e26 100644 --- a/layout.c +++ b/layout.c @@ -1,6 +1,4 @@ -/* © 2006-2007 Anselm R. Garbe - * © 2006-2007 Sander van Dijk - * See LICENSE file for license details. */ +/* See LICENSE file for copyright and license details. */ #include "dwm.h" #include @@ -14,6 +12,22 @@ static unsigned int masterw = MASTERWIDTH; static unsigned int nmaster = NMASTER; static void +ban(Client *c) { + if (c->isbanned) + return; + XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); + c->isbanned = True; +} + +static void +unban(Client *c) { + if (!c->isbanned) + return; + XMoveWindow(dpy, c->win, c->x, c->y); + c->isbanned = False; +} + +static void tile(void) { unsigned int i, n, nx, ny, nw, nh, mw, mh, tw, th; Client *c; @@ -28,9 +42,7 @@ tile(void) { for(i = 0, c = clients; c; c = c->next) if(isvisible(c)) { - if(c->isbanned) - XMoveWindow(dpy, c->win, c->x, c->y); - c->isbanned = False; + unban(c); if(c->isfloating) continue; c->ismax = False; @@ -40,7 +52,7 @@ tile(void) { ny += i * mh; nw = mw - 2 * c->border; nh = mh; - if(i + 1 == nmaster) /* remainder */ + if(i + 1 == (n < nmaster ? n : nmaster)) /* remainder */ nh = wah - mh * i; nh -= 2 * c->border; } @@ -60,12 +72,9 @@ tile(void) { resize(c, nx, ny, nw, nh, False); i++; } - else { - c->isbanned = True; - XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); - } - if(!sel || !isvisible(sel)) - focustopvisible(); + else + ban(c); + focus(NULL); restack(); } @@ -77,20 +86,16 @@ void floating(void) { Client *c; - for(c = clients; c; c = c->next) { + for(c = clients; c; c = c->next) if(isvisible(c)) { if(c->isbanned) XMoveWindow(dpy, c->win, c->x, c->y); c->isbanned = False; resize(c, c->x, c->y, c->w, c->h, True); } - else { - c->isbanned = True; - XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); - } - } - if(!sel || !isvisible(sel)) - focustopvisible(); + else + ban(c); + focus(NULL); restack(); } @@ -238,7 +243,7 @@ togglemax(const char *arg) { sel->ry = sel->y; sel->rw = sel->w; sel->rh = sel->h; - resize(sel, wax, way, waw - 2 * BORDERPX, wah - 2 * BORDERPX, True); + 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);