diff options
author | okan | 2014-08-25 14:31:22 +0000 |
---|---|---|
committer | okan | 2014-08-25 14:31:22 +0000 |
commit | 65f7d6fe84c11c78932bd9c10bce0ed3ded143c8 (patch) | |
tree | 46450ff078a2e29d5d813fa95d9d652bff9dcb14 /xutil.c | |
parent | 69a4c46eec5a14a1d2e31092a91056655acdf8d5 (diff) | |
download | cwm-65f7d6fe84c11c78932bd9c10bce0ed3ded143c8.tar.gz |
Since the flatting out of sc->group_names is only for setting
NET_DESKTOP_NAMES, merge the helper into xu_ewmh_net_desktop_names,
where we actually set the property.
Diffstat (limited to 'xutil.c')
-rw-r--r-- | xutil.c | 22 |
1 files changed, 19 insertions, 3 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: 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 */ |