Now that a group knows its screen, only pass down the group_ctx.

This commit is contained in:
okan 2014-09-08 13:51:29 +00:00
parent 5b46f0f7d8
commit a7f3f29ea9
3 changed files with 19 additions and 19 deletions

View File

@ -408,12 +408,12 @@ void group_alltoggle(struct screen_ctx *);
void group_autogroup(struct client_ctx *); void group_autogroup(struct client_ctx *);
void group_cycle(struct screen_ctx *, int); void group_cycle(struct screen_ctx *, int);
int group_hidden_state(struct group_ctx *); int group_hidden_state(struct group_ctx *);
void group_hide(struct screen_ctx *, struct group_ctx *); void group_hide(struct group_ctx *);
void group_hidetoggle(struct screen_ctx *, int); void group_hidetoggle(struct screen_ctx *, int);
void group_init(struct screen_ctx *); void group_init(struct screen_ctx *);
void group_movetogroup(struct client_ctx *, int); void group_movetogroup(struct client_ctx *, int);
void group_only(struct screen_ctx *, int); void group_only(struct screen_ctx *, int);
void group_show(struct screen_ctx *, struct group_ctx *); void group_show(struct group_ctx *);
void group_sticky(struct client_ctx *); void group_sticky(struct client_ctx *);
void group_sticky_toggle_enter(struct client_ctx *); void group_sticky_toggle_enter(struct client_ctx *);
void group_sticky_toggle_exit(struct client_ctx *); void group_sticky_toggle_exit(struct client_ctx *);

32
group.c
View File

@ -33,7 +33,7 @@
#include "calmwm.h" #include "calmwm.h"
static void group_assign(struct group_ctx *, struct client_ctx *); static void group_assign(struct group_ctx *, struct client_ctx *);
static void group_restack(struct screen_ctx *, struct group_ctx *); static void group_restack(struct group_ctx *);
static void group_setactive(struct screen_ctx *, long); static void group_setactive(struct screen_ctx *, long);
const char *num_to_name[] = { const char *num_to_name[] = {
@ -56,30 +56,30 @@ group_assign(struct group_ctx *gc, struct client_ctx *cc)
} }
void void
group_hide(struct screen_ctx *sc, struct group_ctx *gc) group_hide(struct group_ctx *gc)
{ {
struct client_ctx *cc; struct client_ctx *cc;
screen_updatestackingorder(sc); screen_updatestackingorder(gc->sc);
TAILQ_FOREACH(cc, &gc->clients, group_entry) TAILQ_FOREACH(cc, &gc->clients, group_entry)
client_hide(cc); client_hide(cc);
} }
void void
group_show(struct screen_ctx *sc, struct group_ctx *gc) group_show(struct group_ctx *gc)
{ {
struct client_ctx *cc; struct client_ctx *cc;
TAILQ_FOREACH(cc, &gc->clients, group_entry) TAILQ_FOREACH(cc, &gc->clients, group_entry)
client_unhide(cc); client_unhide(cc);
group_restack(sc, gc); group_restack(gc);
group_setactive(sc, gc->num); group_setactive(gc->sc, gc->num);
} }
static void static void
group_restack(struct screen_ctx *sc, struct group_ctx *gc) group_restack(struct group_ctx *gc)
{ {
struct client_ctx *cc; struct client_ctx *cc;
Window *winlist; Window *winlist;
@ -238,9 +238,9 @@ group_hidetoggle(struct screen_ctx *sc, int idx)
} }
if (group_hidden_state(gc)) if (group_hidden_state(gc))
group_show(sc, gc); group_show(gc);
else { else {
group_hide(sc, gc); group_hide(gc);
/* make clients stick to empty group */ /* make clients stick to empty group */
if (TAILQ_EMPTY(&gc->clients)) if (TAILQ_EMPTY(&gc->clients))
group_setactive(sc, idx); group_setactive(sc, idx);
@ -257,9 +257,9 @@ group_only(struct screen_ctx *sc, int idx)
TAILQ_FOREACH(gc, &sc->groupq, entry) { TAILQ_FOREACH(gc, &sc->groupq, entry) {
if (gc->num == idx) if (gc->num == idx)
group_show(sc, gc); group_show(gc);
else else
group_hide(sc, gc); group_hide(gc);
} }
} }
@ -286,16 +286,16 @@ group_cycle(struct screen_ctx *sc, int flags)
if (!TAILQ_EMPTY(&gc->clients) && showgroup == NULL) if (!TAILQ_EMPTY(&gc->clients) && showgroup == NULL)
showgroup = gc; showgroup = gc;
else if (!group_hidden_state(gc)) else if (!group_hidden_state(gc))
group_hide(sc, gc); group_hide(gc);
} }
if (showgroup == NULL) if (showgroup == NULL)
return; return;
group_hide(sc, sc->group_active); group_hide(sc->group_active);
if (group_hidden_state(showgroup)) if (group_hidden_state(showgroup))
group_show(sc, showgroup); group_show(showgroup);
else else
group_setactive(sc, showgroup->num); group_setactive(sc, showgroup->num);
} }
@ -307,9 +307,9 @@ group_alltoggle(struct screen_ctx *sc)
TAILQ_FOREACH(gc, &sc->groupq, entry) { TAILQ_FOREACH(gc, &sc->groupq, entry) {
if (sc->group_hideall) if (sc->group_hideall)
group_show(sc, gc); group_show(gc);
else else
group_hide(sc, gc); group_hide(gc);
} }
sc->group_hideall = !sc->group_hideall; sc->group_hideall = !sc->group_hideall;
} }

View File

@ -201,7 +201,7 @@ mousefunc_menu_group(struct client_ctx *cc, union arg *arg)
NULL, NULL)) != NULL) { NULL, NULL)) != NULL) {
gc = (struct group_ctx *)mi->ctx; gc = (struct group_ctx *)mi->ctx;
(group_hidden_state(gc)) ? (group_hidden_state(gc)) ?
group_show(sc, gc) : group_hide(sc, gc); group_show(gc) : group_hide(gc);
} }
menuq_clear(&menuq); menuq_clear(&menuq);