added ban() which takes care than a banned window is not banned again... (this reduces the overall ConfigureNotify's to clients)
This commit is contained in:
		
							parent
							
								
									0d095ae2ff
								
							
						
					
					
						commit
						3ce8c9f338
					
				
							
								
								
									
										10
									
								
								client.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								client.c
									
									
									
									
									
								
							| @ -67,6 +67,14 @@ xerrordummy(Display *dsply, XErrorEvent *ee) { | |||||||
| 
 | 
 | ||||||
| /* extern */ | /* extern */ | ||||||
| 
 | 
 | ||||||
|  | void | ||||||
|  | ban(Client *c) { | ||||||
|  | 	if(!c || c->isbanned) | ||||||
|  | 		return; | ||||||
|  | 	c->isbanned = True; | ||||||
|  | 	XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void | void | ||||||
| configure(Client *c) { | configure(Client *c) { | ||||||
| 	XConfigureEvent ce; | 	XConfigureEvent ce; | ||||||
| @ -190,7 +198,7 @@ manage(Window w, XWindowAttributes *wa) { | |||||||
| 	c->next = clients; | 	c->next = clients; | ||||||
| 	c->snext = stack; | 	c->snext = stack; | ||||||
| 	stack = clients = c; | 	stack = clients = c; | ||||||
| 	XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); | 	ban(c); | ||||||
| 	XMapWindow(dpy, c->win); | 	XMapWindow(dpy, c->win); | ||||||
| 	setclientstate(c, NormalState); | 	setclientstate(c, NormalState); | ||||||
| 	if(isvisible(c)) | 	if(isvisible(c)) | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| # dwm version
 | # dwm version
 | ||||||
| VERSION = 3.5 | VERSION = 3.6 | ||||||
| 
 | 
 | ||||||
| # Customize below to fit your system
 | # Customize below to fit your system
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										3
									
								
								dwm.h
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								dwm.h
									
									
									
									
									
								
							| @ -73,7 +73,7 @@ struct Client { | |||||||
| 	int minax, minay, maxax, maxay; | 	int minax, minay, maxax, maxay; | ||||||
| 	long flags;  | 	long flags;  | ||||||
| 	unsigned int border; | 	unsigned int border; | ||||||
| 	Bool isfixed, isfloat, ismax; | 	Bool isbanned, isfixed, isfloat, ismax; | ||||||
| 	Bool *tags; | 	Bool *tags; | ||||||
| 	Client *next; | 	Client *next; | ||||||
| 	Client *prev; | 	Client *prev; | ||||||
| @ -99,6 +99,7 @@ extern Display *dpy; | |||||||
| extern Window root, barwin; | extern Window root, barwin; | ||||||
| 
 | 
 | ||||||
| /* client.c */ | /* client.c */ | ||||||
|  | extern void ban(Client *c);			/* ban c */ | ||||||
| extern void configure(Client *c);		/* send synthetic configure event */ | extern void configure(Client *c);		/* send synthetic configure event */ | ||||||
| extern void focus(Client *c);			/* focus c, c may be NULL */ | extern void focus(Client *c);			/* focus c, c may be NULL */ | ||||||
| extern Client *getclient(Window w);		/* return client of w */ | extern Client *getclient(Window w);		/* return client of w */ | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								event.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								event.c
									
									
									
									
									
								
							| @ -189,7 +189,7 @@ configurerequest(XEvent *e) { | |||||||
| 				configure(c); | 				configure(c); | ||||||
| 			resize(c, False); | 			resize(c, False); | ||||||
| 			if(!isvisible(c)) | 			if(!isvisible(c)) | ||||||
| 				XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); | 				ban(c); | ||||||
| 		} | 		} | ||||||
| 		else | 		else | ||||||
| 			configure(c); | 			configure(c); | ||||||
|  | |||||||
							
								
								
									
										9
									
								
								view.c
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								view.c
									
									
									
									
									
								
							| @ -55,10 +55,12 @@ dofloat(void) { | |||||||
| 	Client *c; | 	Client *c; | ||||||
| 
 | 
 | ||||||
| 	for(c = clients; c; c = c->next) { | 	for(c = clients; c; c = c->next) { | ||||||
| 		if(isvisible(c)) | 		if(isvisible(c)) { | ||||||
|  | 			c->isbanned = False; | ||||||
| 			resize(c, True); | 			resize(c, True); | ||||||
|  | 		} | ||||||
| 		else | 		else | ||||||
| 			XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); | 			ban(c); | ||||||
| 	} | 	} | ||||||
| 	if(!sel || !isvisible(sel)) { | 	if(!sel || !isvisible(sel)) { | ||||||
| 		for(c = stack; c && !isvisible(c); c = c->snext); | 		for(c = stack; c && !isvisible(c); c = c->snext); | ||||||
| @ -82,6 +84,7 @@ dotile(void) { | |||||||
| 
 | 
 | ||||||
| 	for(i = 0, c = clients; c; c = c->next) | 	for(i = 0, c = clients; c; c = c->next) | ||||||
| 		if(isvisible(c)) { | 		if(isvisible(c)) { | ||||||
|  | 			c->isbanned = False; | ||||||
| 			if(c->isfloat) { | 			if(c->isfloat) { | ||||||
| 				resize(c, True); | 				resize(c, True); | ||||||
| 				continue; | 				continue; | ||||||
| @ -108,7 +111,7 @@ dotile(void) { | |||||||
| 			i++; | 			i++; | ||||||
| 		} | 		} | ||||||
| 		else | 		else | ||||||
| 			XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); | 			ban(c); | ||||||
| 	if(!sel || !isvisible(sel)) { | 	if(!sel || !isvisible(sel)) { | ||||||
| 		for(c = stack; c && !isvisible(c); c = c->snext); | 		for(c = stack; c && !isvisible(c); c = c->snext); | ||||||
| 		focus(c); | 		focus(c); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user