about summary refs log tree commit diff
diff options
context:
space:
mode:
authorokan <okan>2012-07-13 14:18:04 +0000
committerokan <okan>2012-07-13 14:18:04 +0000
commitcc08aef0df6236f794fb1d5dfcef265dba9da228 (patch)
treed8319581e897d35827fc9a89ff0fd25d74c91c29
parent2450e309ea6b0666606adcd93146687ece13c11e (diff)
downloadcwm-cc08aef0df6236f794fb1d5dfcef265dba9da228.tar.gz
cwm-cc08aef0df6236f794fb1d5dfcef265dba9da228.tar.xz
cwm-cc08aef0df6236f794fb1d5dfcef265dba9da228.zip
introduce screen "view" area and "work" area (gap applied) to simplify
various blocks that require understanding the screen geometry.
-rw-r--r--calmwm.h9
-rw-r--r--screen.c10
2 files changed, 19 insertions, 0 deletions
diff --git a/calmwm.h b/calmwm.h
index 3ef5260..4eee07b 100644
--- a/calmwm.h
+++ b/calmwm.h
@@ -96,6 +96,13 @@ struct color {
 	unsigned long	 pixel;
 };
 
+struct geom {
+	int		 x;
+	int		 y;
+	int		 w;
+	int		 h;
+};
+
 struct gap {
 	int		 top;
 	int		 bottom;
@@ -206,6 +213,8 @@ struct screen_ctx {
 	int			 cycling;
 	int			 xmax;
 	int			 ymax;
+	struct geom		 view; /* viewable area */
+	struct geom		 work; /* workable area, gap-applied */
 	struct gap		 gap;
 	struct cycle_entry_q	 mruq;
 	XftColor		 xftcolor;
diff --git a/screen.c b/screen.c
index dd7eb0e..72468c2 100644
--- a/screen.c
+++ b/screen.c
@@ -120,6 +120,16 @@ screen_update_geometry(struct screen_ctx *sc)
 	sc->xmax = DisplayWidth(X_Dpy, sc->which);
 	sc->ymax = DisplayHeight(X_Dpy, sc->which);
 
+	sc->view.x = 0;
+	sc->view.y = 0;
+	sc->view.w = DisplayWidth(X_Dpy, sc->which);
+	sc->view.h = DisplayHeight(X_Dpy, sc->which);
+
+	sc->work.x = sc->view.x + sc->gap.left;
+	sc->work.y = sc->view.y + sc->gap.top;
+	sc->work.w = sc->view.w - (sc->gap.left + sc->gap.right);
+	sc->work.h = sc->view.h - (sc->gap.top + sc->gap.bottom);
+
 	screen_init_xinerama(sc);
 
 	xu_ewmh_net_desktop_geometry(sc);