summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorOkan Demirmen <okan@cvs.openbsd.org>2012-07-13 14:18:05 +0000
committerOkan Demirmen <okan@cvs.openbsd.org>2012-07-13 14:18:05 +0000
commitfaeb5961fdec501bae4e3401d9890e58b3fbbf25 (patch)
treee5a884e41cde0553fee6f1487db5e760aba43926 /app
parentdb32c6bd3a83f4c5d298c6d3c3a709e2fda75a6c (diff)
introduce screen "view" area and "work" area (gap applied) to simplify
various blocks that require understanding the screen geometry.
Diffstat (limited to 'app')
-rw-r--r--app/cwm/calmwm.h11
-rw-r--r--app/cwm/screen.c12
2 files changed, 21 insertions, 2 deletions
diff --git a/app/cwm/calmwm.h b/app/cwm/calmwm.h
index 3383663c2..1bc20d222 100644
--- a/app/cwm/calmwm.h
+++ b/app/cwm/calmwm.h
@@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $OpenBSD: calmwm.h,v 1.149 2012/07/06 14:18:00 okan Exp $
+ * $OpenBSD: calmwm.h,v 1.150 2012/07/13 14:18:04 okan Exp $
*/
#ifndef _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/app/cwm/screen.c b/app/cwm/screen.c
index def241d4c..28778b12b 100644
--- a/app/cwm/screen.c
+++ b/app/cwm/screen.c
@@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $OpenBSD: screen.c,v 1.31 2012/07/06 14:18:00 okan Exp $
+ * $OpenBSD: screen.c,v 1.32 2012/07/13 14:18:04 okan Exp $
*/
#include <sys/param.h>
@@ -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);