removed c->f{x,y,w,h} and c->t{x,y,w,h} in favor for the new rule handling remembering two kinds of geometries is unnecessary, removed the randomized (x,y) setting on dofloat startup, was kind too random und unpredictable
authorarg@10ksloc.org
Thu, 20 Jul 2006 07:26:23 +0200
changeset 115 329fd7dae530
parent 114 dfa5cd0969a6
child 116 eca09aac3ccc
removed c->f{x,y,w,h} and c->t{x,y,w,h} in favor for the new rule handling remembering two kinds of geometries is unnecessary, removed the randomized (x,y) setting on dofloat startup, was kind too random und unpredictable
client.c
dwm.h
event.c
tag.c
--- a/client.c	Wed Jul 19 17:42:08 2006 +0200
+++ b/client.c	Thu Jul 20 07:26:23 2006 +0200
@@ -16,19 +16,19 @@
 {
 	int i;
 
-	c->bw = 0;
+	c->tw = 0;
 	for(i = 0; i < TLast; i++)
 		if(c->tags[i])
-			c->bw += textw(c->tags[i]);
-	c->bw += textw(c->name);
-	if(c->bw > *c->w)
-		c->bw = *c->w + 2;
-	c->bx = *c->x + *c->w - c->bw + 2;
-	c->by = *c->y;
+			c->tw += textw(c->tags[i]);
+	c->tw += textw(c->name);
+	if(c->tw > c->w)
+		c->tw = c->w + 2;
+	c->tx = c->x + c->w - c->tw + 2;
+	c->ty = c->y;
 	if(c->tags[tsel])
-		XMoveResizeWindow(dpy, c->title, c->bx, c->by, c->bw, c->bh);
+		XMoveResizeWindow(dpy, c->title, c->tx, c->ty, c->tw, c->th);
 	else
-		XMoveResizeWindow(dpy, c->title, c->bx + 2 * sw, c->by, c->bw, c->bh);
+		XMoveResizeWindow(dpy, c->title, c->tx + 2 * sw, c->ty, c->tw, c->th);
 
 }
 
@@ -43,8 +43,8 @@
 void
 ban(Client *c)
 {
-	XMoveWindow(dpy, c->win, *c->x + 2 * sw, *c->y);
-	XMoveWindow(dpy, c->title, c->bx + 2 * sw, c->by);
+	XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
+	XMoveWindow(dpy, c->title, c->tx + 2 * sw, c->ty);
 }
 
 void
@@ -128,12 +128,12 @@
 	case EastGravity:
 	case CenterGravity:
 	case WestGravity:
-		dy = -(*c->h / 2) + c->border;
+		dy = -(c->h / 2) + c->border;
 		break;
 	case SouthEastGravity:
 	case SouthGravity:
 	case SouthWestGravity:
-		dy = -(*c->h);
+		dy = -(c->h);
 		break;
 	default:
 		break;
@@ -149,12 +149,12 @@
 	case NorthGravity:
 	case CenterGravity:
 	case SouthGravity:
-		dx = -(*c->w / 2) + c->border;
+		dx = -(c->w / 2) + c->border;
 		break;
 	case NorthEastGravity:
 	case EastGravity:
 	case SouthEastGravity:
-		dx = -(*c->w + c->border);
+		dx = -(c->w + c->border);
 		break;
 	default:
 		break;
@@ -164,8 +164,8 @@
 		dx = -dx;
 		dy = -dy;
 	}
-	*c->x += dx;
-	*c->y += dy;
+	c->x += dx;
+	c->y += dy;
 }
 
 void
@@ -203,19 +203,14 @@
 
 	c = emallocz(sizeof(Client));
 	c->win = w;
-	c->bx = c->fx = c->tx = wa->x;
-	c->by = c->fy = c->ty = wa->y;
-	c->bw = c->fw = c->tw = wa->width;
-	c->fh = c->th = wa->height;
-	c->bh = bh;
+	c->x = c->tx = wa->x;
+	c->y = c->ty = wa->y;
+	c->w = c->tw = wa->width;
+	c->h = wa->height;
+	c->th = bh;
 
-	diff = sw - c->fw;
-	c->fx = random() % (diff ? diff : 1);
-	diff = sh - c->fh - bh;
-	c->fy = random() % (diff ? diff : 1);
-
-	if(c->fy < bh)
-		c->by = c->fy = c->ty = bh;
+	if(c->y < bh)
+		c->y = c->ty = bh;
 
 	c->border = 1;
 	c->proto = getproto(c->win);
@@ -227,7 +222,7 @@
 	twa.background_pixmap = ParentRelative;
 	twa.event_mask = ExposureMask;
 
-	c->title = XCreateWindow(dpy, root, c->bx, c->by, c->bw, c->bh,
+	c->title = XCreateWindow(dpy, root, c->tx, c->ty, c->tw, c->th,
 			0, DefaultDepth(dpy, screen), CopyFromParent,
 			DefaultVisual(dpy, screen),
 			CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa);
@@ -251,9 +246,7 @@
 				(c->maxw == c->minw) && (c->maxh == c->minh));
 
 
-	setgeom(c);
 	settitle(c);
-
 	arrange(NULL);
 
 	/* mapping the window now prevents flicker */
@@ -273,10 +266,10 @@
 {
 	if(!sel)
 		return;
-	*sel->x = sx;
-	*sel->y = sy + bh;
-	*sel->w = sw - 2 * sel->border;
-	*sel->h = sh - 2 * sel->border - bh;
+	sel->x = sx;
+	sel->y = sy + bh;
+	sel->w = sw - 2 * sel->border;
+	sel->h = sh - 2 * sel->border - bh;
 	higher(sel);
 	resize(sel, False, TopLeft);
 }
@@ -297,43 +290,43 @@
 resize(Client *c, Bool inc, Corner sticky)
 {
 	XConfigureEvent e;
-	int right = *c->x + *c->w;
-	int bottom = *c->y + *c->h;
+	int right = c->x + c->w;
+	int bottom = c->y + c->h;
 
 	if(inc) {
 		if(c->incw)
-			*c->w -= (*c->w - c->basew) % c->incw;
+			c->w -= (c->w - c->basew) % c->incw;
 		if(c->inch)
-			*c->h -= (*c->h - c->baseh) % c->inch;
+			c->h -= (c->h - c->baseh) % c->inch;
 	}
-	if(*c->x > sw) /* might happen on restart */
-		*c->x = sw - *c->w;
-	if(*c->y > sh)
-		*c->y = sh - *c->h;
-	if(c->minw && *c->w < c->minw)
-		*c->w = c->minw;
-	if(c->minh && *c->h < c->minh)
-		*c->h = c->minh;
-	if(c->maxw && *c->w > c->maxw)
-		*c->w = c->maxw;
-	if(c->maxh && *c->h > c->maxh)
-		*c->h = c->maxh;
+	if(c->x > sw) /* might happen on restart */
+		c->x = sw - c->w;
+	if(c->y > sh)
+		c->y = sh - c->h;
+	if(c->minw && c->w < c->minw)
+		c->w = c->minw;
+	if(c->minh && c->h < c->minh)
+		c->h = c->minh;
+	if(c->maxw && c->w > c->maxw)
+		c->w = c->maxw;
+	if(c->maxh && c->h > c->maxh)
+		c->h = c->maxh;
 	if(sticky == TopRight || sticky == BotRight)
-		*c->x = right - *c->w;
+		c->x = right - c->w;
 	if(sticky == BotLeft || sticky == BotRight)
-		*c->y = bottom - *c->h;
+		c->y = bottom - c->h;
 
 	resizetitle(c);
 	XSetWindowBorderWidth(dpy, c->win, 1);
-	XMoveResizeWindow(dpy, c->win, *c->x, *c->y, *c->w, *c->h);
+	XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h);
 
 	e.type = ConfigureNotify;
 	e.event = c->win;
 	e.window = c->win;
-	e.x = *c->x;
-	e.y = *c->y;
-	e.width = *c->w;
-	e.height = *c->h;
+	e.x = c->x;
+	e.y = c->y;
+	e.width = c->w;
+	e.height = c->h;
 	e.border_width = c->border;
 	e.above = None;
 	e.override_redirect = False;
@@ -342,23 +335,6 @@
 }
 
 void
-setgeom(Client *c)
-{
-	if((arrange == dotile) && !c->isfloat) {
-		c->x = &c->tx;
-		c->y = &c->ty;
-		c->w = &c->tw;
-		c->h = &c->th;
-	}
-	else {
-		c->x = &c->fx;
-		c->y = &c->fy;
-		c->w = &c->fw;
-		c->h = &c->fh;
-	}
-}
-
-void
 setsize(Client *c)
 {
 	XSizeHints size;
--- a/dwm.h	Wed Jul 19 17:42:08 2006 +0200
+++ b/dwm.h	Thu Jul 20 07:26:23 2006 +0200
@@ -67,10 +67,8 @@
 	char name[256];
 	char *tags[TLast];
 	int proto;
-	int *x, *y, *w, *h; /* current geom */
-	int bx, by, bw, bh; /* title bar */
-	int fx, fy, fw, fh; /* floating geom */
-	int tx, ty, tw, th; /* tiled geom */
+	int x, y, w, h;
+	int tx, ty, tw, th; /* title */
 	int basew, baseh, incw, inch, maxw, maxh, minw, minh;
 	int grav;
 	unsigned int border;
@@ -109,7 +107,6 @@
 extern void maximize(Arg *arg);
 extern void pop(Client *c);
 extern void resize(Client *c, Bool inc, Corner sticky);
-extern void setgeom(Client *c);
 extern void setsize(Client *c);
 extern void settitle(Client *c);
 extern void unmanage(Client *c);
--- a/event.c	Wed Jul 19 17:42:08 2006 +0200
+++ b/event.c	Thu Jul 20 07:26:23 2006 +0200
@@ -70,8 +70,8 @@
 	unsigned int dui;
 	Window dummy;
 
-	ocx = *c->x;
-	ocy = *c->y;
+	ocx = c->x;
+	ocy = c->y;
 	if(XGrabPointer(dpy, root, False, MouseMask, GrabModeAsync, GrabModeAsync,
 				None, cursor[CurMove], CurrentTime) != GrabSuccess)
 		return;
@@ -85,8 +85,8 @@
 			break;
 		case MotionNotify:
 			XSync(dpy, False);
-			*c->x = ocx + (ev.xmotion.x - x1);
-			*c->y = ocy + (ev.xmotion.y - y1);
+			c->x = ocx + (ev.xmotion.x - x1);
+			c->y = ocy + (ev.xmotion.y - y1);
 			resize(c, False, TopLeft);
 			break;
 		case ButtonRelease:
@@ -103,12 +103,12 @@
 	int ocx, ocy;
 	Corner sticky;
 
-	ocx = *c->x;
-	ocy = *c->y;
+	ocx = c->x;
+	ocy = c->y;
 	if(XGrabPointer(dpy, root, False, MouseMask, GrabModeAsync, GrabModeAsync,
 				None, cursor[CurResize], CurrentTime) != GrabSuccess)
 		return;
-	XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, *c->w, *c->h);
+	XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w, c->h);
 	for(;;) {
 		XMaskEvent(dpy, MouseMask | ExposureMask, &ev);
 		switch(ev.type) {
@@ -118,10 +118,10 @@
 			break;
 		case MotionNotify:
 			XSync(dpy, False);
-			*c->w = abs(ocx - ev.xmotion.x);
-			*c->h = abs(ocy - ev.xmotion.y);
-			*c->x = (ocx <= ev.xmotion.x) ? ocx : ocx - *c->w;
-			*c->y = (ocy <= ev.xmotion.y) ? ocy : ocy - *c->h;
+			c->w = abs(ocx - ev.xmotion.x);
+			c->h = abs(ocy - ev.xmotion.y);
+			c->x = (ocx <= ev.xmotion.x) ? ocx : ocx - c->w;
+			c->y = (ocy <= ev.xmotion.y) ? ocy : ocy - c->h;
 			if(ocx <= ev.xmotion.x)
 				sticky = (ocy <= ev.xmotion.y) ? TopLeft : BotLeft;
 			else
@@ -203,13 +203,13 @@
 	if((c = getclient(ev->window))) {
 		gravitate(c, True);
 		if(ev->value_mask & CWX)
-			*c->x = ev->x;
+			c->x = ev->x;
 		if(ev->value_mask & CWY)
-			*c->y = ev->y;
+			c->y = ev->y;
 		if(ev->value_mask & CWWidth)
-			*c->w = ev->width;
+			c->w = ev->width;
 		if(ev->value_mask & CWHeight)
-			*c->h = ev->height;
+			c->h = ev->height;
 		if(ev->value_mask & CWBorderWidth)
 			c->border = 1;
 		gravitate(c, False);
--- a/tag.c	Wed Jul 19 17:42:08 2006 +0200
+++ b/tag.c	Thu Jul 20 07:26:23 2006 +0200
@@ -53,7 +53,6 @@
 
 	arrange = dofloat;
 	for(c = clients; c; c = c->next) {
-		setgeom(c);
 		if(c->tags[tsel]) {
 			resize(c, True, TopLeft);
 		}
@@ -87,7 +86,6 @@
 		h = sh - bh;
 
 	for(i = 0, c = clients; c; c = c->next) {
-		setgeom(c);
 		if(c->tags[tsel]) {
 			if(c->isfloat) {
 				higher(c);
@@ -95,28 +93,28 @@
 				continue;
 			}
 			if(n == 1) {
-				*c->x = sx;
-				*c->y = sy + bh;
-				*c->w = sw - 2 * c->border;
-				*c->h = sh - 2 * c->border - bh;
+				c->x = sx;
+				c->y = sy + bh;
+				c->w = sw - 2 * c->border;
+				c->h = sh - 2 * c->border - bh;
 			}
 			else if(i == 0) {
-				*c->x = sx;
-				*c->y = sy + bh;
-				*c->w = mw - 2 * c->border;
-				*c->h = sh - 2 * c->border - bh;
+				c->x = sx;
+				c->y = sy + bh;
+				c->w = mw - 2 * c->border;
+				c->h = sh - 2 * c->border - bh;
 			}
 			else if(h > bh) {
-				*c->x = sx + mw;
-				*c->y = sy + (i - 1) * h + bh;
-				*c->w = w - 2 * c->border;
-				*c->h = h - 2 * c->border;
+				c->x = sx + mw;
+				c->y = sy + (i - 1) * h + bh;
+				c->w = w - 2 * c->border;
+				c->h = h - 2 * c->border;
 			}
 			else { /* fallback if h < bh */
-				*c->x = sx + mw;
-				*c->y = sy + bh;
-				*c->w = w - 2 * c->border;
-				*c->h = sh - 2 * c->border - bh;
+				c->x = sx + mw;
+				c->y = sy + bh;
+				c->w = w - 2 * c->border;
+				c->h = sh - 2 * c->border - bh;
 			}
 			resize(c, False, TopLeft);
 			i++;