introduce screen "view" area and "work" area (gap applied) to simplify

various blocks that require understanding the screen geometry.
This commit is contained in:
okan 2012-07-13 14:18:04 +00:00
parent 2450e309ea
commit cc08aef0df
2 changed files with 19 additions and 0 deletions

View File

@ -96,6 +96,13 @@ struct color {
unsigned long pixel; unsigned long pixel;
}; };
struct geom {
int x;
int y;
int w;
int h;
};
struct gap { struct gap {
int top; int top;
int bottom; int bottom;
@ -206,6 +213,8 @@ struct screen_ctx {
int cycling; int cycling;
int xmax; int xmax;
int ymax; int ymax;
struct geom view; /* viewable area */
struct geom work; /* workable area, gap-applied */
struct gap gap; struct gap gap;
struct cycle_entry_q mruq; struct cycle_entry_q mruq;
XftColor xftcolor; XftColor xftcolor;

View File

@ -120,6 +120,16 @@ screen_update_geometry(struct screen_ctx *sc)
sc->xmax = DisplayWidth(X_Dpy, sc->which); sc->xmax = DisplayWidth(X_Dpy, sc->which);
sc->ymax = DisplayHeight(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); screen_init_xinerama(sc);
xu_ewmh_net_desktop_geometry(sc); xu_ewmh_net_desktop_geometry(sc);