| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -815,8 +815,12 @@ void | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					focus(Client *c) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(!c || !ISVISIBLE(c)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							for(c = selmon->stack; c && !ISVISIBLE(c); c = c->snext); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/*	if(selmon->sel) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							unfocus(selmon->sel);*/ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(c && c == selmon->sel) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							D fprintf(stderr, "focus, optimising focus away\n"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							return; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(selmon->sel) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							unfocus(selmon->sel); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(c) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(c->mon != selmon) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								selmon = c->mon; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -848,7 +852,8 @@ focusmon(const Arg *arg) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(!mons->next) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							return; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						m = dirtomon(arg->i); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if((m = dirtomon(arg->i)) == selmon) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							return; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						unfocus(selmon->sel); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						selmon = m; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						focus(NULL); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -1406,7 +1411,7 @@ run(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						/* main event loop */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XSync(dpy, False); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						while(running && !XNextEvent(dpy, &ev)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							D fprintf(stderr, "run event %s\n", evname[ev.type]); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							D fprintf(stderr, "run event %s %ld\n", evname[ev.type], ev.xany.window); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(handler[ev.type]) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								handler[ev.type](&ev); /* call handler */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |