some other fixes, resize contains a minor bug
authorAnselm R Garbe <garbeam@gmail.com>
Fri, 22 Feb 2008 10:34:12 +0000
changeset 1098 25eea166210d
parent 1097 7241740da6ed
child 1099 5b4e2e1aba85
some other fixes, resize contains a minor bug
dwm.c
--- a/dwm.c	Fri Feb 22 10:15:59 2008 +0000
+++ b/dwm.c	Fri Feb 22 10:34:12 2008 +0000
@@ -1276,7 +1276,6 @@
 	XWindowChanges wc;
 
 	m = c->monitor;
-
 	if(sizehints) {
 		/* set minimum possible */
 		if (w < 1)
@@ -1325,6 +1324,7 @@
 		x = m->sx;
 	if(y + h + 2 * c->border < m->sy)
 		y = m->sy;
+	fprintf(stderr, "resize %d %d %d %d (%d %d %d %d)\n", x, y , w, h, m->sx, m->sy, m->sw, m->sh);
 	if(c->x != x || c->y != y || c->w != w || c->h != h) {
 		c->x = wc.x = x;
 		c->y = wc.y = y;
@@ -1605,7 +1605,7 @@
 		m = &monitors[i];
 		m->id = i;
 
-		if (mcount != 1 && isxinerama) {
+		if(mcount != 1 && isxinerama) {
 			m->sx = info[i].x_org;
 			m->sy = info[i].y_org;
 			m->sw = info[i].width;
@@ -1727,9 +1727,9 @@
 	Client *c, *mc;
 
 	domwfact = dozoom = True;
-
-	nx = ny = nw = 0; /* gcc stupidity requires this */
-
+	nx = m->wax;
+	ny = m->way;
+	nw = 0;
 	for(n = 0, c = nexttiled(clients, m); c; c = nexttiled(c->next, m))
 		n++;
 
@@ -1757,16 +1757,17 @@
 			else
 				nh = th - 2 * c->border;
 		}
+		fprintf(stderr, "tile %d %d %d %d\n", nx, ny, nw, nh);
 		resize(c, nx, ny, nw, nh, RESIZEHINTS);
 		if((RESIZEHINTS) && ((c->h < bh) || (c->h > nh) || (c->w < bh) || (c->w > nw)))
 			/* client doesn't accept size constraints */
 			resize(c, nx, ny, nw, nh, False);
 		if(n > 1 && th != m->wah)
 			ny = c->y + c->h + 2 * c->border;
-
 		i++;
 	}
 }
+
 void
 togglebar(const char *arg) {
 	if(bpos == BarOff)
@@ -1824,6 +1825,7 @@
 
 void
 unmanage(Client *c) {
+	Monitor *m = c->monitor;
 	XWindowChanges wc;
 
 	wc.border_width = c->oldborder;
@@ -1842,7 +1844,7 @@
 	XSync(dpy, False);
 	XSetErrorHandler(xerror);
 	XUngrabServer(dpy);
-	arrange(NULL);
+	arrange(m);
 }
 
 void