|
@ -214,7 +214,7 @@ char stext[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; |
|
|
|
|
|
|
|
|
int seltags = 0; |
|
|
double mfact; |
|
|
double mfact; |
|
|
unsigned int numlockmask = 0; |
|
|
unsigned int numlockmask = 0; |
|
|
void (*handler[LASTEvent]) (XEvent *) = { |
|
|
void (*handler[LASTEvent]) (XEvent *) = { |
|
@ -234,8 +234,7 @@ 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 *seltags; |
|
|
|
|
|
Bool *viewtags[2]; |
|
|
|
|
|
|
|
|
Bool *tagset[2]; |
|
|
Client *clients = NULL; |
|
|
Client *clients = NULL; |
|
|
Client *sel = NULL; |
|
|
Client *sel = NULL; |
|
|
Client *stack = NULL; |
|
|
Client *stack = NULL; |
|
@ -278,7 +277,7 @@ applyrules(Client *c) { |
|
|
if(ch.res_name) |
|
|
if(ch.res_name) |
|
|
XFree(ch.res_name); |
|
|
XFree(ch.res_name); |
|
|
if(!matched) |
|
|
if(!matched) |
|
|
memcpy(c->tags, seltags, TAGSZ); |
|
|
|
|
|
|
|
|
memcpy(c->tags, tagset[seltags], TAGSZ); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void |
|
|
void |
|
@ -538,7 +537,7 @@ drawbar(void) { |
|
|
for(c = stack; c && !isvisible(c); c = c->snext); |
|
|
for(c = stack; c && !isvisible(c); c = c->snext); |
|
|
for(i = 0; i < LENGTH(tags); i++) { |
|
|
for(i = 0; i < LENGTH(tags); i++) { |
|
|
dc.w = textw(tags[i]); |
|
|
dc.w = textw(tags[i]); |
|
|
if(seltags[i]) { |
|
|
|
|
|
|
|
|
if(tagset[seltags][i]) { |
|
|
drawtext(tags[i], dc.sel, isurgent(i)); |
|
|
drawtext(tags[i], dc.sel, isurgent(i)); |
|
|
drawsquare(c && c->tags[i], isoccupied(i), isurgent(i), dc.sel); |
|
|
drawsquare(c && c->tags[i], isoccupied(i), isurgent(i), dc.sel); |
|
|
} |
|
|
} |
|
@ -933,7 +932,7 @@ isvisible(Client *c) { |
|
|
unsigned int i; |
|
|
unsigned int i; |
|
|
|
|
|
|
|
|
for(i = 0; i < LENGTH(tags); i++) |
|
|
for(i = 0; i < LENGTH(tags); i++) |
|
|
if(c->tags[i] && seltags[i]) |
|
|
|
|
|
|
|
|
if(c->tags[i] && tagset[seltags][i]) |
|
|
return True; |
|
|
return True; |
|
|
return False; |
|
|
return False; |
|
|
} |
|
|
} |
|
@ -1505,10 +1504,9 @@ setup(void) { |
|
|
XSetFont(dpy, dc.gc, dc.font.xfont->fid); |
|
|
XSetFont(dpy, dc.gc, dc.font.xfont->fid); |
|
|
|
|
|
|
|
|
/* init tags */ |
|
|
/* init tags */ |
|
|
viewtags[0] = emallocz(TAGSZ); |
|
|
|
|
|
viewtags[1] = emallocz(TAGSZ); |
|
|
|
|
|
viewtags[0][0] = viewtags[1][0] = True; |
|
|
|
|
|
seltags = viewtags[0]; |
|
|
|
|
|
|
|
|
tagset[0] = emallocz(TAGSZ); |
|
|
|
|
|
tagset[1] = emallocz(TAGSZ); |
|
|
|
|
|
tagset[0][0] = tagset[1][0] = True; |
|
|
|
|
|
|
|
|
/* 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++) { |
|
@ -1701,10 +1699,10 @@ toggleview(const char *arg) { |
|
|
unsigned int i, j; |
|
|
unsigned int i, j; |
|
|
|
|
|
|
|
|
i = idxoftag(arg); |
|
|
i = idxoftag(arg); |
|
|
seltags[i] = !seltags[i]; |
|
|
|
|
|
for(j = 0; j < LENGTH(tags) && !seltags[j]; j++); |
|
|
|
|
|
|
|
|
tagset[seltags][i] = !tagset[seltags][i]; |
|
|
|
|
|
for(j = 0; j < LENGTH(tags) && !tagset[seltags][j]; j++); |
|
|
if(j == LENGTH(tags)) |
|
|
if(j == LENGTH(tags)) |
|
|
seltags[i] = True; /* at least one tag must be viewed */ |
|
|
|
|
|
|
|
|
tagset[seltags][i] = True; /* at least one tag must be viewed */ |
|
|
arrange(); |
|
|
arrange(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -1837,18 +1835,15 @@ view(const char *arg) { |
|
|
tmp[i] = (NULL == arg); |
|
|
tmp[i] = (NULL == arg); |
|
|
tmp[idxoftag(arg)] = True; |
|
|
tmp[idxoftag(arg)] = True; |
|
|
|
|
|
|
|
|
if(memcmp(seltags, tmp, TAGSZ) != 0) { |
|
|
|
|
|
seltags = viewtags[viewtags_set ^= 1]; /* toggle tagset */ |
|
|
|
|
|
memcpy(seltags, tmp, TAGSZ); |
|
|
|
|
|
arrange(); |
|
|
|
|
|
} |
|
|
|
|
|
else |
|
|
|
|
|
viewprevtag(NULL); |
|
|
|
|
|
|
|
|
seltags ^= 1; /* toggle sel tagset */ |
|
|
|
|
|
if(memcmp(tagset[seltags ^ 1], tmp, TAGSZ) != 0) |
|
|
|
|
|
memcpy(tagset[seltags], tmp, TAGSZ); |
|
|
|
|
|
arrange(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void |
|
|
void |
|
|
viewprevtag(const char *arg) { |
|
|
viewprevtag(const char *arg) { |
|
|
seltags = viewtags[viewtags_set ^= 1]; /* toggle tagset */ |
|
|
|
|
|
|
|
|
seltags ^= 1; /* toggle sel tagset */ |
|
|
arrange(); |
|
|
arrange(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|