applied Ph's seltags-simplification with some modifications
c0596251
1 file(s) · +10 −13
| 214 | 214 | int screen, sx, sy, sw, sh; |
|
| 215 | 215 | int (*xerrorxlib)(Display *, XErrorEvent *); |
|
| 216 | 216 | int bx, by, bw, bh, blw, bgw, mx, my, mw, mh, mox, moy, mow, moh, tx, ty, tw, th, wx, wy, ww, wh; |
|
| 217 | + | int viewtags_set = 0; |
|
| 217 | 218 | double mfact; |
|
| 218 | 219 | unsigned int numlockmask = 0; |
|
| 219 | 220 | void (*handler[LASTEvent]) (XEvent *) = { |
|
| 233 | 234 | Atom wmatom[WMLast], netatom[NetLast]; |
|
| 234 | 235 | Bool otherwm, readin; |
|
| 235 | 236 | Bool running = True; |
|
| 236 | - | Bool *prevtags; |
|
| 237 | 237 | Bool *seltags; |
|
| 238 | + | Bool *viewtags[2]; |
|
| 238 | 239 | Client *clients = NULL; |
|
| 239 | 240 | Client *sel = NULL; |
|
| 240 | 241 | Client *stack = NULL; |
|
| 246 | 247 | /* configuration, allows nested code to access above variables */ |
|
| 247 | 248 | #include "config.h" |
|
| 248 | 249 | #define TAGSZ (LENGTH(tags) * sizeof(Bool)) |
|
| 249 | - | Bool tmp[LENGTH(tags)]; |
|
| 250 | 250 | Layout *lt = layouts; |
|
| 251 | 251 | Geom *geom = geoms; |
|
| 252 | 252 | ||
| 1158 | 1158 | ||
| 1159 | 1159 | void |
|
| 1160 | 1160 | reapply(const char *arg) { |
|
| 1161 | - | static Bool zerotags[LENGTH(tags)] = { 0 }; |
|
| 1162 | 1161 | Client *c; |
|
| 1163 | 1162 | ||
| 1164 | 1163 | for(c = clients; c; c = c->next) { |
|
| 1165 | - | memcpy(c->tags, zerotags, sizeof zerotags); |
|
| 1164 | + | memset(c->tags, 0, TAGSZ); |
|
| 1166 | 1165 | applyrules(c); |
|
| 1167 | 1166 | } |
|
| 1168 | 1167 | arrange(); |
|
| 1506 | 1505 | XSetFont(dpy, dc.gc, dc.font.xfont->fid); |
|
| 1507 | 1506 | ||
| 1508 | 1507 | /* init tags */ |
|
| 1509 | - | seltags = emallocz(TAGSZ); |
|
| 1510 | - | prevtags = emallocz(TAGSZ); |
|
| 1511 | - | seltags[0] = prevtags[0] = True; |
|
| 1508 | + | viewtags[0] = emallocz(TAGSZ); |
|
| 1509 | + | viewtags[1] = emallocz(TAGSZ); |
|
| 1510 | + | viewtags[0][0] = viewtags[1][0] = True; |
|
| 1511 | + | seltags = viewtags[0]; |
|
| 1512 | 1512 | ||
| 1513 | 1513 | /* init bar */ |
|
| 1514 | 1514 | for(blw = i = 0; LENGTH(layouts) > 1 && i < LENGTH(layouts); i++) { |
|
| 1828 | 1828 | } |
|
| 1829 | 1829 | } |
|
| 1830 | 1830 | ||
| 1831 | - | ||
| 1832 | 1831 | void |
|
| 1833 | 1832 | view(const char *arg) { |
|
| 1833 | + | Bool tmp[LENGTH(tags)]; |
|
| 1834 | 1834 | unsigned int i; |
|
| 1835 | 1835 | ||
| 1836 | 1836 | for(i = 0; i < LENGTH(tags); i++) |
|
| 1838 | 1838 | tmp[idxoftag(arg)] = True; |
|
| 1839 | 1839 | ||
| 1840 | 1840 | if(memcmp(seltags, tmp, TAGSZ) != 0) { |
|
| 1841 | - | memcpy(prevtags, seltags, TAGSZ); |
|
| 1841 | + | seltags = viewtags[viewtags_set ^= 1]; /* toggle tagset */ |
|
| 1842 | 1842 | memcpy(seltags, tmp, TAGSZ); |
|
| 1843 | 1843 | arrange(); |
|
| 1844 | 1844 | } |
|
| 1846 | 1846 | ||
| 1847 | 1847 | void |
|
| 1848 | 1848 | viewprevtag(const char *arg) { |
|
| 1849 | - | ||
| 1850 | - | memcpy(tmp, seltags, TAGSZ); |
|
| 1851 | - | memcpy(seltags, prevtags, TAGSZ); |
|
| 1852 | - | memcpy(prevtags, tmp, TAGSZ); |
|
| 1849 | + | seltags = viewtags[viewtags_set ^= 1]; /* toggle tagset */ |
|
| 1853 | 1850 | arrange(); |
|
| 1854 | 1851 | } |
|
| 1855 | 1852 | ||