diff options
author | Anselm R. Garbe <garbeam@gmail.com> | 2007-09-27 20:08:21 +0200 |
---|---|---|
committer | Anselm R. Garbe <garbeam@gmail.com> | 2007-09-27 20:08:21 +0200 |
commit | 3f3086f8b87aed5bf443c8fbcbe32e052fc9c17d (patch) | |
tree | c38c746832a66ea6f098ea4d44dfa0b43778720d | |
parent | f92a4e45c42b5cdd26ec1a28048d9c47b51b98ce (diff) | |
download | dwm-3f3086f8b87aed5bf443c8fbcbe32e052fc9c17d.tar.gz |
improved tile() for the RESIZEHINTS == True case, now more space is consumed by the clients (esp. if those clients use increment handling heavily)
-rw-r--r-- | dwm.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/dwm.c b/dwm.c index 277f561..50f4ea0 100644 --- a/dwm.c +++ b/dwm.c @@ -1569,7 +1569,7 @@ textw(const char *text) { void tile(void) { 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)) n++; @@ -1582,7 +1582,8 @@ tile(void) { nx = wax; 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; if(i == 0) { /* master */ nw = mw - 2 * c->border; @@ -1591,9 +1592,9 @@ tile(void) { else { /* tile window */ if(i == 1) { 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 */ nh = (way + wah) - ny - 2 * c->border; else @@ -1601,7 +1602,7 @@ tile(void) { } resize(c, nx, ny, nw, nh, RESIZEHINTS); if(n > 1 && th != wah) - ny += nh + 2 * c->border; + ny = c->y + c->h + 2 * c->border; } } |