about summary refs log tree commit diff
diff options
context:
space:
mode:
authorokan <okan>2012-07-16 01:36:30 +0000
committerokan <okan>2012-07-16 01:36:30 +0000
commite42d1c7f01e06665a3e6e763685e47b965e7b0ae (patch)
tree40a1093ab394b520d41ebc224565eb8d85c9db9c
parent0e8815dfb02f38a622d71ea3eb5644e6d5b8fb90 (diff)
downloadcwm-e42d1c7f01e06665a3e6e763685e47b965e7b0ae.tar.gz
cwm-e42d1c7f01e06665a3e6e763685e47b965e7b0ae.tar.xz
cwm-e42d1c7f01e06665a3e6e763685e47b965e7b0ae.zip
move the HasXinerama check into screen_find_xinerama and simplify logic;
moves closer to logic in menu code.
-rw-r--r--client.c59
-rw-r--r--screen.c3
2 files changed, 28 insertions, 34 deletions
diff --git a/client.c b/client.c
index 57807e3..c101c5e 100644
--- a/client.c
+++ b/client.c
@@ -258,6 +258,7 @@ client_maximize(struct client_ctx *cc)
 	struct screen_ctx	*sc = cc->sc;
 	int			 xmax = sc->view.w, ymax = sc->view.h;
 	int			 x_org = 0, y_org = 0;
+	XineramaScreenInfo	*xine;
 
 	if (cc->flags & CLIENT_FREEZE)
 		return;
@@ -279,24 +280,21 @@ client_maximize(struct client_ctx *cc)
 		cc->savegeom.x = cc->geom.x;
 	}
 
-	if (HasXinerama) {
-		XineramaScreenInfo *xine;
-		/*
-		 * pick screen that the middle of the window is on.
-		 * that's probably more fair than if just the origin of
-		 * a window is poking over a boundary
-		 */
-		xine = screen_find_xinerama(sc,
-		    cc->geom.x + cc->geom.w / 2,
-		    cc->geom.y + cc->geom.h / 2);
-		if (xine == NULL)
-			goto calc;
+	/*
+	 * pick screen that the middle of the window is on.
+	 * that's probably more fair than if just the origin of
+	 * a window is poking over a boundary
+	 */
+	xine = screen_find_xinerama(sc,
+	    cc->geom.x + cc->geom.w / 2,
+	    cc->geom.y + cc->geom.h / 2);
+	if (xine) {
 		x_org = xine->x_org;
 		y_org = xine->y_org;
 		xmax = xine->width;
 		ymax = xine->height;
 	}
-calc:
+
 	cc->geom.x = x_org + sc->gap.left;
 	cc->geom.y = y_org + sc->gap.top;
 	cc->geom.h = ymax - (sc->gap.top + sc->gap.bottom);
@@ -313,6 +311,7 @@ client_vertmaximize(struct client_ctx *cc)
 {
 	struct screen_ctx	*sc = cc->sc;
 	int			 y_org = 0, ymax = sc->view.h;
+	XineramaScreenInfo	*xine;
 
 	if (cc->flags & CLIENT_FREEZE)
 		return;
@@ -336,17 +335,14 @@ client_vertmaximize(struct client_ctx *cc)
 		cc->bwidth = 0;
 	}
 
-	if (HasXinerama) {
-		XineramaScreenInfo *xine;
-		xine = screen_find_xinerama(sc,
-		    cc->geom.x + cc->geom.w / 2,
-		    cc->geom.y + cc->geom.h / 2);
-		if (xine == NULL)
-			goto calc;
+	xine = screen_find_xinerama(sc,
+	    cc->geom.x + cc->geom.w / 2,
+	    cc->geom.y + cc->geom.h / 2);
+	if (xine) {
 		y_org = xine->y_org;
 		ymax = xine->height;
 	}
-calc:
+
 	cc->geom.y = y_org + sc->gap.top;
 	cc->geom.h = ymax - (cc->bwidth * 2) - (sc->gap.top +
 	    sc->gap.bottom);
@@ -361,6 +357,7 @@ client_horizmaximize(struct client_ctx *cc)
 {
 	struct screen_ctx	*sc = cc->sc;
 	int			 x_org = 0, xmax = sc->view.w;
+	XineramaScreenInfo	*xine;
 
 	if (cc->flags & CLIENT_FREEZE)
 		return;
@@ -384,17 +381,14 @@ client_horizmaximize(struct client_ctx *cc)
 		cc->bwidth = 0;
 	}
 
-	if (HasXinerama) {
-		XineramaScreenInfo *xine;
-		xine = screen_find_xinerama(sc,
-		    cc->geom.x + cc->geom.w / 2,
-		    cc->geom.y + cc->geom.h / 2);
-		if (xine == NULL)
-			goto calc;
+	xine = screen_find_xinerama(sc,
+	    cc->geom.x + cc->geom.w / 2,
+	    cc->geom.y + cc->geom.h / 2);
+	if (xine) {
 		x_org = xine->x_org;
 		xmax = xine->width;
 	}
-calc:
+
 	cc->geom.x = x_org + sc->gap.left;
 	cc->geom.w = xmax - (cc->bwidth * 2) - (sc->gap.left +
 	    sc->gap.right);
@@ -682,16 +676,13 @@ client_placecalc(struct client_ctx *cc)
 		int			 xmax, ymax;
 
 		xu_ptr_getpos(sc->rootwin, &xmouse, &ymouse);
-		if (HasXinerama) {
-			info = screen_find_xinerama(sc, xmouse, ymouse);
-			if (info == NULL)
-				goto noxine;
+		info = screen_find_xinerama(sc, xmouse, ymouse);
+		if (info) {
 			xorig = info->x_org;
 			yorig = info->y_org;
 			xmax = xorig + info->width;
 			ymax = yorig + info->height;
 		} else {
-noxine:
 			xorig = yorig = 0;
 			xmax = sc->view.w;
 			ymax = sc->view.h;
diff --git a/screen.c b/screen.c
index 07f1731..29d720e 100644
--- a/screen.c
+++ b/screen.c
@@ -105,6 +105,9 @@ screen_find_xinerama(struct screen_ctx *sc, int x, int y)
 	XineramaScreenInfo	*info;
 	int			 i;
 
+	if (HasXinerama = 0)
+		return (NULL);
+
 	for (i = 0; i < sc->xinerama_no; i++) {
 		info = &sc->xinerama[i];
 		if (x >= info->x_org && x < info->x_org + info->width &&