summary refs log tree commit diff
diff options
context:
space:
mode:
authorokan <okan>2016-10-04 15:18:20 +0000
committerokan <okan>2016-10-04 15:18:20 +0000
commit9306c1fbd3e491b9dcdcbb8587460296843a10ce (patch)
treee2851b48a7e80954e8556f5336865763133a794e
parent8aa5033d12eec5e764885f3e8b27c1df22d6b0df (diff)
downloadcwm-9306c1fbd3e491b9dcdcbb8587460296843a10ce.tar.gz
cwm-9306c1fbd3e491b9dcdcbb8587460296843a10ce.tar.xz
cwm-9306c1fbd3e491b9dcdcbb8587460296843a10ce.zip
Turn CALMWM_NGROUPS define into variable, ngroups.
-rw-r--r--calmwm.h2
-rw-r--r--conf.c1
-rw-r--r--group.c8
-rw-r--r--screen.c2
-rw-r--r--xutil.c25
5 files changed, 20 insertions, 18 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;
-
-	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;
+	unsigned long	*workarea;
+	int		 i, ngroups = Conf.ngroups;
+
+	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);