applied Ph's seltags-simplification with some modifications

This commit is contained in:
anselm@anselm1 2008-04-20 18:35:11 +01:00
parent 874837f653
commit c059625128

23
dwm.c
View file

@ -214,6 +214,7 @@ char stext[256], buf[256];
int screen, sx, sy, sw, sh; int screen, sx, sy, sw, sh;
int (*xerrorxlib)(Display *, XErrorEvent *); int (*xerrorxlib)(Display *, XErrorEvent *);
int bx, by, bw, bh, blw, bgw, mx, my, mw, mh, mox, moy, mow, moh, tx, ty, tw, th, wx, wy, ww, wh; int bx, by, bw, bh, blw, bgw, mx, my, mw, mh, mox, moy, mow, moh, tx, ty, tw, th, wx, wy, ww, wh;
int viewtags_set = 0;
double mfact; double mfact;
unsigned int numlockmask = 0; unsigned int numlockmask = 0;
void (*handler[LASTEvent]) (XEvent *) = { void (*handler[LASTEvent]) (XEvent *) = {
@ -233,8 +234,8 @@ void (*handler[LASTEvent]) (XEvent *) = {
Atom wmatom[WMLast], netatom[NetLast]; Atom wmatom[WMLast], netatom[NetLast];
Bool otherwm, readin; Bool otherwm, readin;
Bool running = True; Bool running = True;
Bool *prevtags;
Bool *seltags; Bool *seltags;
Bool *viewtags[2];
Client *clients = NULL; Client *clients = NULL;
Client *sel = NULL; Client *sel = NULL;
Client *stack = NULL; Client *stack = NULL;
@ -246,7 +247,6 @@ Window root, barwin;
/* configuration, allows nested code to access above variables */ /* configuration, allows nested code to access above variables */
#include "config.h" #include "config.h"
#define TAGSZ (LENGTH(tags) * sizeof(Bool)) #define TAGSZ (LENGTH(tags) * sizeof(Bool))
Bool tmp[LENGTH(tags)];
Layout *lt = layouts; Layout *lt = layouts;
Geom *geom = geoms; Geom *geom = geoms;
@ -1158,11 +1158,10 @@ quit(const char *arg) {
void void
reapply(const char *arg) { reapply(const char *arg) {
static Bool zerotags[LENGTH(tags)] = { 0 };
Client *c; Client *c;
for(c = clients; c; c = c->next) { for(c = clients; c; c = c->next) {
memcpy(c->tags, zerotags, sizeof zerotags); memset(c->tags, 0, TAGSZ);
applyrules(c); applyrules(c);
} }
arrange(); arrange();
@ -1506,9 +1505,10 @@ setup(void) {
XSetFont(dpy, dc.gc, dc.font.xfont->fid); XSetFont(dpy, dc.gc, dc.font.xfont->fid);
/* init tags */ /* init tags */
seltags = emallocz(TAGSZ); viewtags[0] = emallocz(TAGSZ);
prevtags = emallocz(TAGSZ); viewtags[1] = emallocz(TAGSZ);
seltags[0] = prevtags[0] = True; viewtags[0][0] = viewtags[1][0] = True;
seltags = viewtags[0];
/* init bar */ /* init bar */
for(blw = i = 0; LENGTH(layouts) > 1 && i < LENGTH(layouts); i++) { for(blw = i = 0; LENGTH(layouts) > 1 && i < LENGTH(layouts); i++) {
@ -1828,9 +1828,9 @@ updatewmhints(Client *c) {
} }
} }
void void
view(const char *arg) { view(const char *arg) {
Bool tmp[LENGTH(tags)];
unsigned int i; unsigned int i;
for(i = 0; i < LENGTH(tags); i++) for(i = 0; i < LENGTH(tags); i++)
@ -1838,7 +1838,7 @@ view(const char *arg) {
tmp[idxoftag(arg)] = True; tmp[idxoftag(arg)] = True;
if(memcmp(seltags, tmp, TAGSZ) != 0) { if(memcmp(seltags, tmp, TAGSZ) != 0) {
memcpy(prevtags, seltags, TAGSZ); seltags = viewtags[viewtags_set ^= 1]; /* toggle tagset */
memcpy(seltags, tmp, TAGSZ); memcpy(seltags, tmp, TAGSZ);
arrange(); arrange();
} }
@ -1846,10 +1846,7 @@ view(const char *arg) {
void void
viewprevtag(const char *arg) { viewprevtag(const char *arg) {
seltags = viewtags[viewtags_set ^= 1]; /* toggle tagset */
memcpy(tmp, seltags, TAGSZ);
memcpy(seltags, prevtags, TAGSZ);
memcpy(prevtags, tmp, TAGSZ);
arrange(); arrange();
} }