about summary refs log tree commit diff
diff options
context:
space:
mode:
authorokan <okan>2013-01-08 04:12:51 +0000
committerokan <okan>2013-01-08 04:12:51 +0000
commitbf9d9815976c0afae2e87afeebaa57b02b1d911c (patch)
tree04bbefefe007df702c689a7ccf38b770f3dbae07
parente7b85cfb2f4d04e283d448cc3a09014e858eeb94 (diff)
downloadcwm-bf9d9815976c0afae2e87afeebaa57b02b1d911c.tar.gz
cwm-bf9d9815976c0afae2e87afeebaa57b02b1d911c.tar.xz
cwm-bf9d9815976c0afae2e87afeebaa57b02b1d911c.zip
teach screen_find_xinerama() about gap and adjust (simplify) callers;
menu becomes gap-aware for free.
-rw-r--r--client.c33
-rw-r--r--screen.c10
2 files changed, 16 insertions, 27 deletions
diff --git a/client.c b/client.c
index 6fcfb88..459d024 100644
--- a/client.c
+++ b/client.c
@@ -286,10 +286,7 @@ client_maximize(struct client_ctx *cc)
 	    cc->geom.x + cc->geom.w / 2,
 	    cc->geom.y + cc->geom.h / 2);
 
-	cc->geom.x = xine.x + sc->gap.left;
-	cc->geom.y = xine.y + sc->gap.top;
-	cc->geom.h = xine.h - (sc->gap.top + sc->gap.bottom);
-	cc->geom.w = xine.w - (sc->gap.left + sc->gap.right);
+	cc->geom = xine;
 	cc->bwidth = 0;
 	cc->flags |= CLIENT_MAXIMIZED;
 
@@ -329,9 +326,8 @@ client_vmaximize(struct client_ctx *cc)
 	    cc->geom.x + cc->geom.w / 2,
 	    cc->geom.y + cc->geom.h / 2);
 
-	cc->geom.y = xine.y + sc->gap.top;
-	cc->geom.h = xine.h - (cc->bwidth * 2) - (sc->gap.top +
-	    sc->gap.bottom);
+	cc->geom.y = xine.y;
+	cc->geom.h = xine.h - (cc->bwidth * 2);
 	cc->flags |= CLIENT_VMAXIMIZED;
 
 resize:
@@ -370,9 +366,8 @@ client_hmaximize(struct client_ctx *cc)
 	    cc->geom.x + cc->geom.w / 2,
 	    cc->geom.y + cc->geom.h / 2);
 
-	cc->geom.x = xine.x + sc->gap.left;
-	cc->geom.w = xine.w - (cc->bwidth * 2) - (sc->gap.left +
-	    sc->gap.right);
+	cc->geom.x = xine.x;
+	cc->geom.w = xine.w - (cc->bwidth * 2);
 	cc->flags |= CLIENT_HMAXIMIZED;
 
 resize:
@@ -672,22 +667,16 @@ client_placecalc(struct client_ctx *cc)
 		yslack = xine.h - cc->geom.h - cc->bwidth * 2;
 
 		if (xslack >= xine.x) {
-			cc->geom.x = MAX(MIN(xmouse, xslack),
-			    xine.x + sc->gap.left);
-			if (cc->geom.x > (xslack - sc->gap.right))
-				cc->geom.x -= sc->gap.right;
+			cc->geom.x = MAX(MIN(xmouse, xslack), xine.x);
 		} else {
-			cc->geom.x = xine.x + sc->gap.left;
-			cc->geom.w = xine.w - sc->gap.left;
+			cc->geom.x = xine.x;
+			cc->geom.w = xine.w;
 		}
 		if (yslack >= xine.y) {
-			cc->geom.y = MAX(MIN(ymouse, yslack),
-			    xine.y + sc->gap.top);
-			if (cc->geom.y > (yslack - sc->gap.bottom))
-				cc->geom.y -= sc->gap.bottom;
+			cc->geom.y = MAX(MIN(ymouse, yslack), xine.y);
 		} else {
-			cc->geom.y = xine.y + sc->gap.top;
-			cc->geom.h = xine.h - sc->gap.top;
+			cc->geom.y = xine.y;
+			cc->geom.h = xine.h;
 		}
 	}
 }
diff --git a/screen.c b/screen.c
index 01c2f73..6b7de6b 100644
--- a/screen.c
+++ b/screen.c
@@ -132,7 +132,7 @@ screen_find_xinerama(struct screen_ctx *sc, int x, int y)
 	struct geom		 geom;
 	int			 i;
 
-	geom = sc->view;
+	geom = sc->work;
 
 	if (sc->xinerama == NULL)
 		return (geom);
@@ -141,10 +141,10 @@ screen_find_xinerama(struct screen_ctx *sc, int x, int y)
 		info = &sc->xinerama[i];
 		if (x >= info->x_org && x < info->x_org + info->width &&
 		    y >= info->y_org && y < info->y_org + info->height) {
-			geom.x = info->x_org;
-			geom.y = info->y_org;
-			geom.w = info->width;
-			geom.h = info->height;
+			geom.x = info->x_org + sc->gap.left;
+			geom.y = info->y_org + sc->gap.top;
+			geom.w = info->width - (sc->gap.left + sc->gap.right);
+			geom.h = info->height - (sc->gap.top + sc->gap.bottom);
 			break;
 		}
 	}