diff options
author | okan <okan> | 2014-09-06 16:08:58 +0000 |
---|---|---|
committer | okan <okan> | 2014-09-06 16:08:58 +0000 |
commit | 142f52a0aab29681a46e4ce10eb2618ee99ede95 (patch) | |
tree | fe2faee5da2bcd654fe02e117f9c0e6a068bc563 /group.c | |
parent | 87d604f119e3598ca2b0311082c89ebb67782f76 (diff) | |
download | cwm-142f52a0aab29681a46e4ce10eb2618ee99ede95.tar.gz cwm-142f52a0aab29681a46e4ce10eb2618ee99ede95.tar.xz cwm-142f52a0aab29681a46e4ce10eb2618ee99ede95.zip |
Rework group names: stash the group name inside the group_ctx as opposed
to having to manage an array outside in screen_ctx for group names and shortcuts. Simplifies (and moves bits for) reading, and constructing data for, EWMH's _NET_DESKTOP_NAMES.
Diffstat (limited to 'group.c')
-rw-r--r-- | group.c | 54 |
1 files changed, 2 insertions, 52 deletions
diff --git a/group.c b/group.c index 7d08f34..d1ae4f4 100644 --- a/group.c +++ b/group.c @@ -120,18 +120,15 @@ group_init(struct screen_ctx *sc) TAILQ_INIT(&sc->groupq); sc->group_hideall = 0; - /* - * See if any group names have already been set and update the - * property with ours if they'll have changed. - */ - group_update_names(sc); for (i = 0; i < CALMWM_NGROUPS; i++) { TAILQ_INIT(&sc->groups[i].clients); + sc->groups[i].name = xstrdup(num_to_name[i]); sc->groups[i].num = i; TAILQ_INSERT_TAIL(&sc->groupq, &sc->groups[i], entry); } + xu_ewmh_net_desktop_names(sc); xu_ewmh_net_wm_desktop_viewport(sc); xu_ewmh_net_wm_number_of_desktops(sc); xu_ewmh_net_showing_desktop(sc); @@ -350,50 +347,3 @@ group_autogroup(struct client_ctx *cc) else group_assign(NULL, cc); } - -void -group_update_names(struct screen_ctx *sc) -{ - char **strings, *p; - unsigned char *prop_ret; - int i = 0, j = 0, nstrings = 0, n = 0, setnames = 0; - - if ((j = xu_getprop(sc->rootwin, ewmh[_NET_DESKTOP_NAMES], - cwmh[UTF8_STRING], 0xffffff, (unsigned char **)&prop_ret)) > 0) { - prop_ret[j - 1] = '\0'; /* paranoia */ - while (i < j) { - if (prop_ret[i++] == '\0') - nstrings++; - } - } - - strings = xcalloc((nstrings < CALMWM_NGROUPS ? CALMWM_NGROUPS : - nstrings), sizeof(*strings)); - - p = (char *)prop_ret; - while (n < nstrings) { - strings[n++] = xstrdup(p); - p += strlen(p) + 1; - } - /* - * make sure we always set our defaults if nothing is there to - * replace them. - */ - if (n < CALMWM_NGROUPS) { - setnames = 1; - i = 0; - while (n < CALMWM_NGROUPS) - strings[n++] = xstrdup(num_to_name[i++]); - } - - if (prop_ret != NULL) - XFree(prop_ret); - if (sc->group_nonames != 0) - free(sc->group_names); - - sc->group_names = strings; - sc->group_nonames = n; - - if (setnames) - xu_ewmh_net_desktop_names(sc); -} |