removed initags -- we autoselect the first tag in each view instead
							parent
							
								
									d99ec61482
								
							
						
					
					
						commit
						f1719ac2de
					
				|  | @ -14,7 +14,6 @@ | ||||||
| /* old */ | /* old */ | ||||||
| const char tags[][MAXTAGLEN]     = { "1", "2", "3", "4", "nil", "6", "7", "8", "www" }; | const char tags[][MAXTAGLEN]     = { "1", "2", "3", "4", "nil", "6", "7", "8", "www" }; | ||||||
| unsigned int vtags[LENGTH(tags)] = {  0 ,  0 ,  0 ,  0 ,   0  ,  1 ,  1 ,  1 ,   1   }; | unsigned int vtags[LENGTH(tags)] = {  0 ,  0 ,  0 ,  0 ,   0  ,  1 ,  1 ,  1 ,   1   }; | ||||||
| Bool initags[LENGTH(tags)]       = { [0] = True, [5] = True }; |  | ||||||
| 
 | 
 | ||||||
| Rule rules[] = { | Rule rules[] = { | ||||||
| 	/* class:instance:title substr	tags ref	isfloating */ | 	/* class:instance:title substr	tags ref	isfloating */ | ||||||
|  |  | ||||||
							
								
								
									
										55
									
								
								dwm.c
								
								
								
								
							
							
						
						
									
										55
									
								
								dwm.c
								
								
								
								
							|  | @ -227,7 +227,6 @@ void (*handler[LASTEvent]) (XEvent *) = { | ||||||
| 	[UnmapNotify] = unmapnotify | 	[UnmapNotify] = unmapnotify | ||||||
| }; | }; | ||||||
| Atom wmatom[WMLast], netatom[NetLast]; | Atom wmatom[WMLast], netatom[NetLast]; | ||||||
| Bool isxinerama = False; |  | ||||||
| Bool domwfact = True; | Bool domwfact = True; | ||||||
| Bool dozoom = True; | Bool dozoom = True; | ||||||
| Bool otherwm, readin; | Bool otherwm, readin; | ||||||
|  | @ -246,6 +245,7 @@ Window root; | ||||||
| 
 | 
 | ||||||
| /* 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)) | ||||||
| 
 | 
 | ||||||
| /* function implementations */ | /* function implementations */ | ||||||
| void | void | ||||||
|  | @ -286,7 +286,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, sizeof initags); | 		memcpy(c->tags, seltags, TAGSZ); | ||||||
| 		c->view = selview; | 		c->view = selview; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | @ -654,10 +654,8 @@ enternotify(XEvent *e) { | ||||||
| 	Client *c; | 	Client *c; | ||||||
| 	XCrossingEvent *ev = &e->xcrossing; | 	XCrossingEvent *ev = &e->xcrossing; | ||||||
| 
 | 
 | ||||||
| 	if(ev->mode != NotifyNormal || ev->detail == NotifyInferior) { | 	if((ev->mode != NotifyNormal || ev->detail == NotifyInferior) && ev->window != root) | ||||||
| 		if(!isxinerama || ev->window != root) | 		return; | ||||||
| 			return; |  | ||||||
| 	} |  | ||||||
| 	if((c = getclient(ev->window))) | 	if((c = getclient(ev->window))) | ||||||
| 		focus(c); | 		focus(c); | ||||||
| 	else | 	else | ||||||
|  | @ -1042,7 +1040,7 @@ manage(Window w, XWindowAttributes *wa) { | ||||||
| 	XWindowChanges wc; | 	XWindowChanges wc; | ||||||
| 
 | 
 | ||||||
| 	c = emallocz(sizeof(Client)); | 	c = emallocz(sizeof(Client)); | ||||||
| 	c->tags = emallocz(sizeof initags); | 	c->tags = emallocz(TAGSZ); | ||||||
| 	c->win = w; | 	c->win = w; | ||||||
| 
 | 
 | ||||||
| 	applyrules(c); | 	applyrules(c); | ||||||
|  | @ -1082,7 +1080,7 @@ manage(Window w, XWindowAttributes *wa) { | ||||||
| 	if((rettrans = XGetTransientForHint(dpy, w, &trans) == Success)) | 	if((rettrans = XGetTransientForHint(dpy, w, &trans) == Success)) | ||||||
| 		for(t = clients; t && t->win != trans; t = t->next); | 		for(t = clients; t && t->win != trans; t = t->next); | ||||||
| 	if(t) | 	if(t) | ||||||
| 		memcpy(c->tags, t->tags, sizeof initags); | 		memcpy(c->tags, t->tags, TAGSZ); | ||||||
| 	if(!c->isfloating) | 	if(!c->isfloating) | ||||||
| 		c->isfloating = (rettrans == Success) || c->isfixed; | 		c->isfloating = (rettrans == Success) || c->isfixed; | ||||||
| 	attach(c); | 	attach(c); | ||||||
|  | @ -1501,7 +1499,7 @@ setmwfact(const char *arg) { | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
| setup(void) { | setup(void) { | ||||||
| 	unsigned int i; | 	unsigned int i, j; | ||||||
| 	View *v; | 	View *v; | ||||||
| 	XSetWindowAttributes wa; | 	XSetWindowAttributes wa; | ||||||
| 	XineramaScreenInfo *info = NULL; | 	XineramaScreenInfo *info = NULL; | ||||||
|  | @ -1519,10 +1517,10 @@ setup(void) { | ||||||
| 	cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing); | 	cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing); | ||||||
| 	cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur); | 	cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur); | ||||||
| 
 | 
 | ||||||
| 	if((isxinerama = XineramaIsActive(dpy))) | 	if(XineramaIsActive(dpy)) | ||||||
| 		info = XineramaQueryScreens(dpy, &nviews); | 		info = XineramaQueryScreens(dpy, &nviews); | ||||||
|  | 
 | ||||||
| #if defined(AIM_XINERAMA) | #if defined(AIM_XINERAMA) | ||||||
| isxinerama = True; |  | ||||||
| nviews = 2; /* aim Xinerama */ | nviews = 2; /* aim Xinerama */ | ||||||
| #endif | #endif | ||||||
| 	views = emallocz(nviews * sizeof(View)); | 	views = emallocz(nviews * sizeof(View)); | ||||||
|  | @ -1551,16 +1549,27 @@ nviews = 2; /* aim Xinerama */ | ||||||
| 			blw = i; | 			blw = i; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	seltags = emallocz(sizeof initags); | 	seltags = emallocz(TAGSZ); | ||||||
| 	prevtags = emallocz(sizeof initags); | 	prevtags = emallocz(TAGSZ); | ||||||
| 	memcpy(seltags, initags, sizeof initags); | 
 | ||||||
| 	memcpy(prevtags, initags, sizeof initags); | 	/* check, if vtags need assistance, because there is only 1 view */ | ||||||
|  | 	if(nviews == 1) | ||||||
|  | 		for(i = 0; i < LENGTH(tags); i++) | ||||||
|  | 			vtags[i] = 0; | ||||||
| 
 | 
 | ||||||
| 	for(i = 0; i < nviews; i++) { | 	for(i = 0; i < nviews; i++) { | ||||||
| 		/* init geometry */ | 		/* init geometry */ | ||||||
| 		v = &views[i]; | 		v = &views[i]; | ||||||
| 
 | 
 | ||||||
| 		if(nviews != 1 && isxinerama) { | 		/* select first tag in each view */ | ||||||
|  | 		for(j = 0; j < LENGTH(tags); j++) | ||||||
|  | 			if(vtags[j] == i) { | ||||||
|  | 				seltags[j] = prevtags[j] = True;  | ||||||
|  | 				break; | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 		if(info) { | ||||||
| 
 | 
 | ||||||
| #if defined(AIM_XINERAMA) | #if defined(AIM_XINERAMA) | ||||||
| v->w = DisplayWidth(dpy, screen) / 2; | v->w = DisplayWidth(dpy, screen) / 2; | ||||||
|  | @ -1693,8 +1702,6 @@ tile(View *v) { | ||||||
| 
 | 
 | ||||||
| 	for(i = 0, c = mc = nexttiled(clients, v); c; c = nexttiled(c->next, v)) { | 	for(i = 0, c = mc = nexttiled(clients, v); c; c = nexttiled(c->next, v)) { | ||||||
| 		if(i == 0) { /* master */ | 		if(i == 0) { /* master */ | ||||||
| 			nx = v->wax; |  | ||||||
| 			ny = v->way; |  | ||||||
| 			nw = mw - 2 * c->border; | 			nw = mw - 2 * c->border; | ||||||
| 			nh = v->wah - 2 * c->border; | 			nh = v->wah - 2 * c->border; | ||||||
| 		} | 		} | ||||||
|  | @ -1908,9 +1915,9 @@ view(const char *arg) { | ||||||
| 		tmp[i] = (NULL == arg); | 		tmp[i] = (NULL == arg); | ||||||
| 	tmp[idxoftag(arg)] = True; | 	tmp[idxoftag(arg)] = True; | ||||||
| 
 | 
 | ||||||
| 	if(memcmp(seltags, tmp, sizeof initags) != 0) { | 	if(memcmp(seltags, tmp, TAGSZ) != 0) { | ||||||
| 		memcpy(prevtags, seltags, sizeof initags); | 		memcpy(prevtags, seltags, TAGSZ); | ||||||
| 		memcpy(seltags, tmp, sizeof initags); | 		memcpy(seltags, tmp, TAGSZ); | ||||||
| 		arrange(); | 		arrange(); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | @ -1934,9 +1941,9 @@ void | ||||||
| viewprevtag(const char *arg) { | viewprevtag(const char *arg) { | ||||||
| 	static Bool tmp[LENGTH(tags)]; | 	static Bool tmp[LENGTH(tags)]; | ||||||
| 
 | 
 | ||||||
| 	memcpy(tmp, seltags, sizeof initags); | 	memcpy(tmp, seltags, TAGSZ); | ||||||
| 	memcpy(seltags, prevtags, sizeof initags); | 	memcpy(seltags, prevtags, TAGSZ); | ||||||
| 	memcpy(prevtags, tmp, sizeof initags); | 	memcpy(prevtags, tmp, TAGSZ); | ||||||
| 	arrange(); | 	arrange(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue