diff options
-rw-r--r-- | calmwm.h | 5 | ||||
-rw-r--r-- | group.c | 28 | ||||
-rw-r--r-- | xutil.c | 22 |
3 files changed, 24 insertions, 31 deletions
@@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: calmwm.h,v 1.264 2014/08/25 12:49:19 okan Exp $ + * $OpenBSD: calmwm.h,v 1.265 2014/08/25 14:31:22 okan Exp $ */ #ifndef _CALMWM_H_ @@ -545,8 +545,7 @@ void xu_ewmh_net_wm_number_of_desktops(struct screen_ctx *); void xu_ewmh_net_showing_desktop(struct screen_ctx *); void xu_ewmh_net_virtual_roots(struct screen_ctx *); void xu_ewmh_net_current_desktop(struct screen_ctx *, long); -void xu_ewmh_net_desktop_names(struct screen_ctx *, char *, - int); +void xu_ewmh_net_desktop_names(struct screen_ctx *); void xu_ewmh_net_wm_desktop(struct client_ctx *); Atom *xu_ewmh_get_net_wm_state(struct client_ctx *, int *); @@ -16,7 +16,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: group.c,v 1.95 2014/08/25 12:49:19 okan Exp $ + * $OpenBSD: group.c,v 1.96 2014/08/25 14:31:22 okan Exp $ */ #include <sys/param.h> @@ -38,7 +38,6 @@ static void group_show(struct screen_ctx *, struct group_ctx *); static void group_restack(struct screen_ctx *, struct group_ctx *); static int group_hidden_state(struct group_ctx *); static void group_setactive(struct screen_ctx *, long); -static void group_set_names(struct screen_ctx *); const char *num_to_name[] = { "nogroup", "one", "two", "three", "four", "five", "six", @@ -427,28 +426,7 @@ group_update_names(struct screen_ctx *sc) sc->group_names = strings; sc->group_nonames = n; - if (setnames) - group_set_names(sc); -} -static void -group_set_names(struct screen_ctx *sc) -{ - char *p, *q; - size_t len = 0, tlen, slen; - int i; - - for (i = 0; i < sc->group_nonames; i++) - len += strlen(sc->group_names[i]) + 1; - q = p = xcalloc(len, sizeof(*p)); - - tlen = len; - for (i = 0; i < sc->group_nonames; i++) { - slen = strlen(sc->group_names[i]) + 1; - (void)strlcpy(q, sc->group_names[i], tlen); - tlen -= slen; - q += slen; - } - - xu_ewmh_net_desktop_names(sc, p, len); + if (setnames) + xu_ewmh_net_desktop_names(sc); } @@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: xutil.c,v 1.88 2014/08/25 12:49:19 okan Exp $ + * $OpenBSD: xutil.c,v 1.89 2014/08/25 14:31:22 okan Exp $ */ #include <sys/param.h> @@ -281,10 +281,26 @@ xu_ewmh_net_current_desktop(struct screen_ctx *sc, long idx) } void -xu_ewmh_net_desktop_names(struct screen_ctx *sc, char *data, int n) +xu_ewmh_net_desktop_names(struct screen_ctx *sc) { + char *p, *q; + size_t len = 0, tlen, slen; + int i; + + for (i = 0; i < sc->group_nonames; i++) + len += strlen(sc->group_names[i]) + 1; + q = p = xcalloc(len, sizeof(*p)); + + tlen = len; + for (i = 0; i < sc->group_nonames; i++) { + slen = strlen(sc->group_names[i]) + 1; + (void)strlcpy(q, sc->group_names[i], tlen); + tlen -= slen; + q += slen; + } + XChangeProperty(X_Dpy, sc->rootwin, ewmh[_NET_DESKTOP_NAMES], - cwmh[UTF8_STRING], 8, PropModeReplace, (unsigned char *)data, n); + cwmh[UTF8_STRING], 8, PropModeReplace, (unsigned char *)p, len); } /* Application Window Properties */ |