diff --git a/calmwm.h b/calmwm.h index 526ef46..0afbd18 100644 --- a/calmwm.h +++ b/calmwm.h @@ -450,6 +450,7 @@ void search_match_text(struct menu_q *, struct menu_q *, char *); void search_print_client(struct menu *, int); +struct geom screen_apply_gap(struct screen_ctx *, struct geom); struct screen_ctx *screen_find(Window); struct geom screen_find_xinerama(struct screen_ctx *, int, int, int); diff --git a/screen.c b/screen.c index 19d92a4..b61df5c 100644 --- a/screen.c +++ b/screen.c @@ -140,12 +140,8 @@ screen_find_xinerama(struct screen_ctx *sc, int x, int y, int flags) break; } } - if (flags & CWM_GAP) { - geom.x += sc->gap.left; - geom.y += sc->gap.top; - geom.w -= (sc->gap.left + sc->gap.right); - geom.h -= (sc->gap.top + sc->gap.bottom); - } + if (flags & CWM_GAP) + geom = screen_apply_gap(sc, geom); return(geom); } @@ -160,10 +156,7 @@ screen_update_geometry(struct screen_ctx *sc) 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); + sc->work = screen_apply_gap(sc, sc->view); while ((region = TAILQ_FIRST(&sc->regionq)) != NULL) { TAILQ_REMOVE(&sc->regionq, region, entry); @@ -200,3 +193,14 @@ screen_update_geometry(struct screen_ctx *sc) xu_ewmh_net_desktop_geometry(sc); xu_ewmh_net_workarea(sc); } + +struct geom +screen_apply_gap(struct screen_ctx *sc, struct geom geom) +{ + geom.x += sc->gap.left; + geom.y += sc->gap.top; + geom.w -= (sc->gap.left + sc->gap.right); + geom.h -= (sc->gap.top + sc->gap.bottom); + + return(geom); +}