Get rid of nhidden in group_ctx; it actually never reported correctly

since nhidden wasn't incremented nor decremeted in all the right places,
thus confusing matters.  We don't need to carry a count around, so just
use a local variable in the one place we need one to supply
XRestackWindows().
This commit is contained in:
okan 2014-08-18 13:57:57 +00:00
parent e9cb5b743f
commit 1192007171
2 changed files with 5 additions and 8 deletions

View File

@ -205,7 +205,6 @@ struct group_ctx {
struct client_ctx_q clients;
int shortcut;
int hidden;
int nhidden;
int highstack;
};
TAILQ_HEAD(group_ctx_q, group_ctx);

12
group.c
View File

@ -68,15 +68,13 @@ group_hide(struct screen_ctx *sc, struct group_ctx *gc)
screen_updatestackingorder(sc);
gc->nhidden = 0;
gc->highstack = 0;
TAILQ_FOREACH(cc, &gc->clients, group_entry) {
client_hide(cc);
gc->nhidden++;
if (cc->stackingorder > gc->highstack)
gc->highstack = cc->stackingorder;
}
gc->hidden = 1; /* XXX: equivalent to gc->nhidden > 0 */
gc->hidden = 1;
}
static void
@ -85,6 +83,7 @@ group_show(struct screen_ctx *sc, struct group_ctx *gc)
struct client_ctx *cc;
Window *winlist;
int i, lastempty = -1;
int nwins = 0;
gc->highstack = 0;
TAILQ_FOREACH(cc, &gc->clients, group_entry) {
@ -100,6 +99,7 @@ group_show(struct screen_ctx *sc, struct group_ctx *gc)
TAILQ_FOREACH(cc, &gc->clients, group_entry) {
winlist[gc->highstack - cc->stackingorder] = cc->win;
client_unhide(cc);
nwins++;
}
/* Un-sparseify */
@ -113,7 +113,7 @@ group_show(struct screen_ctx *sc, struct group_ctx *gc)
}
}
XRestackWindows(X_Dpy, winlist, gc->nhidden);
XRestackWindows(X_Dpy, winlist, nwins);
free(winlist);
gc->hidden = 0;
@ -177,10 +177,8 @@ group_movetogroup(struct client_ctx *cc, int idx)
gc = &sc->groups[idx];
if (cc->group == gc)
return;
if (gc->hidden) {
if (gc->hidden)
client_hide(cc);
gc->nhidden++;
}
group_assign(gc, cc);
}