diff options
author | okan | 2014-09-07 17:27:20 +0000 |
---|---|---|
committer | okan | 2014-09-07 17:27:20 +0000 |
commit | de8414180ba3e7a036d756ad6ba65c058536754a (patch) | |
tree | 666b76669b1d634a5a390bad5711972de6daab6e /group.c | |
parent | 743d5fb6a47a25491dc34d67fce0afa93dd00d9f (diff) | |
download | cwm-de8414180ba3e7a036d756ad6ba65c058536754a.tar.gz |
Get rid of a redundant array of groups per screen; we already have a
link to the group queue for each screen.
Diffstat (limited to 'group.c')
-rw-r--r-- | group.c | 32 |
1 files changed, 23 insertions, 9 deletions
@@ -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.98 2014/09/06 16:08:58 okan Exp $ + * $OpenBSD: group.c,v 1.99 2014/09/07 17:27:20 okan Exp $ */ #include <sys/param.h> @@ -116,16 +116,18 @@ group_restack(struct screen_ctx *sc, struct group_ctx *gc) void group_init(struct screen_ctx *sc) { - int i; + struct group_ctx *gc; + int i; TAILQ_INIT(&sc->groupq); sc->group_hideall = 0; 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); + gc = xcalloc(1, sizeof(*gc)); + TAILQ_INIT(&gc->clients); + gc->name = xstrdup(num_to_name[i]); + gc->num = i; + TAILQ_INSERT_TAIL(&sc->groupq, gc, entry); } xu_ewmh_net_desktop_names(sc); @@ -140,7 +142,13 @@ group_init(struct screen_ctx *sc) static void group_setactive(struct screen_ctx *sc, long idx) { - sc->group_active = &sc->groups[idx]; + struct group_ctx *gc; + + TAILQ_FOREACH(gc, &sc->groupq, entry) { + if (gc->num == idx) + break; + } + sc->group_active = gc; xu_ewmh_net_current_desktop(sc, idx); } @@ -154,7 +162,10 @@ group_movetogroup(struct client_ctx *cc, int idx) if (idx < 0 || idx >= CALMWM_NGROUPS) errx(1, "group_movetogroup: index out of range (%d)", idx); - gc = &sc->groups[idx]; + TAILQ_FOREACH(gc, &sc->groupq, entry) { + if (gc->num == idx) + break; + } if (cc->group == gc) return; @@ -220,7 +231,10 @@ group_hidetoggle(struct screen_ctx *sc, int idx) if (idx < 0 || idx >= CALMWM_NGROUPS) errx(1, "group_hidetoggle: index out of range (%d)", idx); - gc = &sc->groups[idx]; + TAILQ_FOREACH(gc, &sc->groupq, entry) { + if (gc->num == idx) + break; + } if (group_hidden_state(gc)) group_show(sc, gc); |