applied Ph's seltags-simplification with some modifications c0596251
anselm@anselm1 · 2008-04-20 18:35 1 file(s) · +10 −13
dwm.c +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