From 9306c1fbd3e491b9dcdcbb8587460296843a10ce Mon Sep 17 00:00:00 2001 From: okan Date: Tue, 4 Oct 2016 15:18:20 +0000 Subject: [PATCH] Turn CALMWM_NGROUPS define into variable, ngroups. --- calmwm.h | 2 +- conf.c | 1 + group.c | 8 ++++---- screen.c | 2 +- xutil.c | 23 ++++++++++++----------- 5 files changed, 19 insertions(+), 17 deletions(-) diff --git a/calmwm.h b/calmwm.h index 4381f62..d9734d9 100644 --- a/calmwm.h +++ b/calmwm.h @@ -235,7 +235,6 @@ struct screen_ctx { struct gap gap; struct client_ctx_q clientq; struct region_ctx_q regionq; -#define CALMWM_NGROUPS 10 struct group_ctx_q groupq; struct group_ctx *group_active; struct { @@ -283,6 +282,7 @@ struct conf { struct autogroupwin_q autogroupq; struct ignore_q ignoreq; struct cmd_q cmdq; + int ngroups; int stickygroups; int bwidth; int mamount; diff --git a/conf.c b/conf.c index f415257..478768d 100644 --- a/conf.c +++ b/conf.c @@ -258,6 +258,7 @@ conf_init(struct conf *c) c->bwidth = 1; c->mamount = 1; c->snapdist = 0; + c->ngroups = 10; TAILQ_INIT(&c->ignoreq); TAILQ_INIT(&c->cmdq); diff --git a/group.c b/group.c index 81961e7..36fd397 100644 --- a/group.c +++ b/group.c @@ -154,7 +154,7 @@ group_movetogroup(struct client_ctx *cc, int idx) struct screen_ctx *sc = cc->sc; struct group_ctx *gc; - if (idx < 0 || idx >= CALMWM_NGROUPS) + if (idx < 0 || idx >= Conf.ngroups) errx(1, "group_movetogroup: index out of range (%d)", idx); TAILQ_FOREACH(gc, &sc->groupq, entry) { @@ -222,7 +222,7 @@ group_hidetoggle(struct screen_ctx *sc, int idx) { struct group_ctx *gc; - if (idx < 0 || idx >= CALMWM_NGROUPS) + if (idx < 0 || idx >= Conf.ngroups) errx(1, "group_hidetoggle: index out of range (%d)", idx); TAILQ_FOREACH(gc, &sc->groupq, entry) { @@ -245,7 +245,7 @@ group_only(struct screen_ctx *sc, int idx) { struct group_ctx *gc; - if (idx < 0 || idx >= CALMWM_NGROUPS) + if (idx < 0 || idx >= Conf.ngroups) errx(1, "group_only: index out of range (%d)", idx); TAILQ_FOREACH(gc, &sc->groupq, entry) { @@ -335,7 +335,7 @@ group_restore(struct client_ctx *cc) return(0); num = (*grpnum == -1) ? 0 : *grpnum; - num = MIN(num, (CALMWM_NGROUPS - 1)); + num = MIN(num, (Conf.ngroups - 1)); XFree(grpnum); TAILQ_FOREACH(gc, &sc->groupq, entry) { diff --git a/screen.c b/screen.c index 7f2132f..79e7cc5 100644 --- a/screen.c +++ b/screen.c @@ -57,7 +57,7 @@ screen_init(int which) screen_update_geometry(sc); - for (i = 0; i < CALMWM_NGROUPS; i++) + for (i = 0; i < Conf.ngroups; i++) group_init(sc, i); xu_ewmh_net_desktop_names(sc); diff --git a/xutil.c b/xutil.c index cd7dfb9..5cb3637 100644 --- a/xutil.c +++ b/xutil.c @@ -131,19 +131,20 @@ xu_ewmh_net_desktop_geometry(struct screen_ctx *sc) void xu_ewmh_net_workarea(struct screen_ctx *sc) { - long workareas[CALMWM_NGROUPS][4]; - int i; + unsigned long *workarea; + int i, ngroups = Conf.ngroups; - for (i = 0; i < CALMWM_NGROUPS; i++) { - workareas[i][0] = sc->work.x; - workareas[i][1] = sc->work.y; - workareas[i][2] = sc->work.w; - workareas[i][3] = sc->work.h; + workarea = xreallocarray(NULL, ngroups * 4, sizeof(unsigned long)); + for (i = 0; i < ngroups; i++) { + workarea[4 * i + 0] = sc->work.x; + workarea[4 * i + 1] = sc->work.y; + workarea[4 * i + 2] = sc->work.w; + workarea[4 * i + 3] = sc->work.h; } - XChangeProperty(X_Dpy, sc->rootwin, ewmh[_NET_WORKAREA], - XA_CARDINAL, 32, PropModeReplace, (unsigned char *)workareas, - CALMWM_NGROUPS * 4); + XA_CARDINAL, 32, PropModeReplace, (unsigned char *)workarea, + ngroups * 4); + free(workarea); } void @@ -223,7 +224,7 @@ xu_ewmh_net_wm_desktop_viewport(struct screen_ctx *sc) void xu_ewmh_net_wm_number_of_desktops(struct screen_ctx *sc) { - long ndesks = CALMWM_NGROUPS; + long ndesks = Conf.ngroups; XChangeProperty(X_Dpy, sc->rootwin, ewmh[_NET_NUMBER_OF_DESKTOPS], XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&ndesks, 1);