removed initags -- we autoselect the first tag in each view instead
This commit is contained in:
		
							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