|
|
|
@ -95,28 +95,23 @@ dofloat(Arg *arg) { |
|
|
|
|
restack(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* This algorithm is based on a (M)aster area and a (S)tacking area.
|
|
|
|
|
* It supports following arrangements: |
|
|
|
|
* SSMMM MMMMM MMMSS |
|
|
|
|
* SSMMM SSSSS MMMSS |
|
|
|
|
*/ |
|
|
|
|
void |
|
|
|
|
dotile(Arg *arg) { |
|
|
|
|
unsigned int i, n, md, stackw, stackh, th; |
|
|
|
|
unsigned int i, n, mpx, stackw, stackh, th; |
|
|
|
|
Client *c; |
|
|
|
|
|
|
|
|
|
for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) |
|
|
|
|
n++; |
|
|
|
|
|
|
|
|
|
md = (sw * master) / 1000; |
|
|
|
|
stackw = sw - md; |
|
|
|
|
mpx = (sw * master) / 1000; |
|
|
|
|
stackw = sw - mpx; |
|
|
|
|
stackh = sh - bh; |
|
|
|
|
|
|
|
|
|
th = stackh; |
|
|
|
|
if(n > 1) |
|
|
|
|
th /= (n - 1); |
|
|
|
|
|
|
|
|
|
for(i = 0, c = clients; c; c = c->next) { |
|
|
|
|
for(i = 0, c = clients; c; c = c->next, i++) |
|
|
|
|
if(isvisible(c)) { |
|
|
|
|
if(c->isfloat) { |
|
|
|
|
resize(c, True, TopLeft); |
|
|
|
@ -130,29 +125,26 @@ dotile(Arg *arg) { |
|
|
|
|
c->h = sh - 2 * BORDERPX - bh; |
|
|
|
|
} |
|
|
|
|
else if(i == 0) { /* master window */ |
|
|
|
|
c->w = md - 2 * BORDERPX; |
|
|
|
|
c->w = mpx - 2 * BORDERPX; |
|
|
|
|
c->h = sh - bh - 2 * BORDERPX; |
|
|
|
|
} |
|
|
|
|
else { /* tile window */ |
|
|
|
|
c->x += md; |
|
|
|
|
c->x += mpx; |
|
|
|
|
c->w = stackw - 2 * BORDERPX; |
|
|
|
|
if(th > bh) { |
|
|
|
|
c->y = sy + (i - 1) * th + bh; |
|
|
|
|
if(i + 1 == n) |
|
|
|
|
c->h = sh - c->y - 2 * BORDERPX; |
|
|
|
|
c->w = stackw - 2 * BORDERPX; |
|
|
|
|
c->h = th - 2 * BORDERPX; |
|
|
|
|
else |
|
|
|
|
c->h = th - 2 * BORDERPX; |
|
|
|
|
} |
|
|
|
|
else { /* fallback if th < bh */ |
|
|
|
|
c->w = stackw - 2 * BORDERPX; |
|
|
|
|
else /* fallback if th < bh */ |
|
|
|
|
c->h = stackh - 2 * BORDERPX; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
resize(c, False, TopLeft); |
|
|
|
|
i++; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
ban(c); |
|
|
|
|
} |
|
|
|
|
if(!sel || !isvisible(sel)) { |
|
|
|
|
for(c = stack; c && !isvisible(c); c = c->snext); |
|
|
|
|
focus(c); |
|
|
|
|