about summary refs log tree commit diff stats
path: root/dwm.c
diff options
context:
space:
mode:
authorAnselm R. Garbe <garbeam@gmail.com>2007-09-27 20:08:21 +0200
committerAnselm R. Garbe <garbeam@gmail.com>2007-09-27 20:08:21 +0200
commit3f3086f8b87aed5bf443c8fbcbe32e052fc9c17d (patch)
treec38c746832a66ea6f098ea4d44dfa0b43778720d /dwm.c
parentf92a4e45c42b5cdd26ec1a28048d9c47b51b98ce (diff)
downloaddwm-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)
Diffstat (limited to 'dwm.c')
-rw-r--r--dwm.c11
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;
 	}
 }