From 9d252184582d96dd916bc97675d6a35a18921140 Mon Sep 17 00:00:00 2001 From: okan Date: Fri, 1 Mar 2019 14:32:01 +0000 Subject: Tie group number and name together during config. --- calmwm.h | 3 ++- conf.c | 28 +++++++++++++++++++++++++++- group.c | 9 ++------- screen.c | 5 +---- 4 files changed, 32 insertions(+), 13 deletions(-) diff --git a/calmwm.h b/calmwm.h index cbd4a83..b6fa48f 100644 --- a/calmwm.h +++ b/calmwm.h @@ -447,7 +447,7 @@ void group_hide(struct group_ctx *); void group_hidetoggle(struct screen_ctx *, int); int group_holds_only_hidden(struct group_ctx *); int group_holds_only_sticky(struct group_ctx *); -void group_init(struct screen_ctx *, int); +void group_init(struct screen_ctx *, int, const char *); void group_movetogroup(struct client_ctx *, int); void group_only(struct screen_ctx *, int); void group_close(struct screen_ctx *, int); @@ -555,6 +555,7 @@ void conf_grab_mouse(Window); void conf_init(struct conf *); void conf_ignore(struct conf *, const char *); void conf_screen(struct screen_ctx *); +void conf_group(struct screen_ctx *); void xev_process(void); diff --git a/conf.c b/conf.c index e54f96a..d6b0dd1 100644 --- a/conf.c +++ b/conf.c @@ -36,6 +36,21 @@ static const char *conf_bind_getmask(const char *, unsigned int *); static void conf_unbind_key(struct conf *, struct bind_ctx *); static void conf_unbind_mouse(struct conf *, struct bind_ctx *); +static const struct { + int num; + const char *name; +} group_binds[] = { + { 0, "nogroup" }, + { 1, "one" }, + { 2, "two" }, + { 3, "three" }, + { 4, "four" }, + { 5, "five" }, + { 6, "six" }, + { 7, "seven" }, + { 8, "eight" }, + { 9, "nine" }, +}; static int cursor_binds[] = { XC_left_ptr, /* CF_NORMAL */ XC_fleur, /* CF_MOVE */ @@ -266,7 +281,7 @@ conf_init(struct conf *c) c->bwidth = 1; c->mamount = 1; c->snapdist = 0; - c->ngroups = 10; + c->ngroups = 0; c->nameqlen = 5; TAILQ_INIT(&c->ignoreq); @@ -502,6 +517,17 @@ conf_screen(struct screen_ctx *sc) conf_grab_kbd(sc->rootwin); } +void +conf_group(struct screen_ctx *sc) +{ + unsigned int i; + + for (i = 0; i < nitems(group_binds); i++) { + group_init(sc, group_binds[i].num, group_binds[i].name); + Conf.ngroups++; + } +} + static const char * conf_bind_getmask(const char *name, unsigned int *mask) { diff --git a/group.c b/group.c index 0dc54ff..eee916f 100644 --- a/group.c +++ b/group.c @@ -37,11 +37,6 @@ static struct group_ctx *group_prev(struct group_ctx *); static void group_restack(struct group_ctx *); static void group_setactive(struct group_ctx *); -const char *num_to_name[] = { - "nogroup", "one", "two", "three", "four", "five", "six", - "seven", "eight", "nine" -}; - void group_assign(struct group_ctx *gc, struct client_ctx *cc) { @@ -124,13 +119,13 @@ group_restack(struct group_ctx *gc) } void -group_init(struct screen_ctx *sc, int num) +group_init(struct screen_ctx *sc, int num, const char *name) { struct group_ctx *gc; gc = xmalloc(sizeof(*gc)); gc->sc = sc; - gc->name = xstrdup(num_to_name[num]); + gc->name = xstrdup(name); gc->num = num; TAILQ_INIT(&gc->clientq); diff --git a/screen.c b/screen.c index 845a323..ffe1e0c 100644 --- a/screen.c +++ b/screen.c @@ -40,7 +40,6 @@ screen_init(int which) Window *wins, w0, w1, active = None; XSetWindowAttributes rootattr; unsigned int nwins, w; - int i; sc = xmalloc(sizeof(*sc)); @@ -61,9 +60,7 @@ screen_init(int which) xu_ewmh_net_supported_wm_check(sc); screen_update_geometry(sc); - - for (i = 0; i < Conf.ngroups; i++) - group_init(sc, i); + conf_group(sc); xu_ewmh_net_desktop_names(sc); xu_ewmh_net_wm_desktop_viewport(sc); -- cgit 1.4.1