improved tile() for the RESIZEHINTS == True case, now more space is consumed by the clients (esp. if those clients use increment handling heavily)

master
Anselm R. Garbe 2007-09-27 20:08:21 +02:00
parent f92a4e45c4
commit 3f3086f8b8
1 changed files with 6 additions and 5 deletions

11
dwm.c
View File

@ -1569,7 +1569,7 @@ textw(const char *text) {
void void
tile(void) { tile(void) {
unsigned int i, n, nx, ny, nw, nh, mw, th; unsigned int i, n, nx, ny, nw, nh, mw, th;
Client *c; Client *c, *mc;
for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next))
n++; n++;
@ -1582,7 +1582,8 @@ tile(void) {
nx = wax; nx = wax;
ny = way; ny = way;
for(i = 0, c = nexttiled(clients); c; c = nexttiled(c->next), i++) { nw = 0; /* gcc stupidity requires this */
for(i = 0, c = mc = nexttiled(clients); c; c = nexttiled(c->next), i++) {
c->ismax = False; c->ismax = False;
if(i == 0) { /* master */ if(i == 0) { /* master */
nw = mw - 2 * c->border; nw = mw - 2 * c->border;
@ -1591,9 +1592,9 @@ tile(void) {
else { /* tile window */ else { /* tile window */
if(i == 1) { if(i == 1) {
ny = way; ny = way;
nx += mw; nx += mc->w + 2 * mc->border;
nw = waw - nx - 2 * c->border;
} }
nw = waw - mw - 2 * c->border;
if(i + 1 == n) /* remainder */ if(i + 1 == n) /* remainder */
nh = (way + wah) - ny - 2 * c->border; nh = (way + wah) - ny - 2 * c->border;
else else
@ -1601,7 +1602,7 @@ tile(void) {
} }
resize(c, nx, ny, nw, nh, RESIZEHINTS); resize(c, nx, ny, nw, nh, RESIZEHINTS);
if(n > 1 && th != wah) if(n > 1 && th != wah)
ny += nh + 2 * c->border; ny = c->y + c->h + 2 * c->border;
} }
} }