| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -77,7 +77,6 @@ focusnext(Arg *arg) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							c = getnext(clients, tsel); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(c) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							higher(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							c->revert = sel; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							focus(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -93,7 +92,11 @@ focusprev(Arg *arg) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(sel->ismax) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							togglemax(NULL); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if((c = sel->revert && sel->revert->tags[tsel] ? sel->revert : NULL)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(!(c = getprev(sel->prev))) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							for(c = clients; c && c->next; c = c->next); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							c = getprev(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(c) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							higher(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							focus(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -127,6 +130,8 @@ gravitate(Client *c, Bool invert) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int dx = 0, dy = 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						switch(c->grav) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						default: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						case StaticGravity: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						case NorthWestGravity: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						case NorthGravity: | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -143,11 +148,11 @@ gravitate(Client *c, Bool invert) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						case SouthWestGravity: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							dy = -(c->h); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						default: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						switch (c->grav) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						default: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						case StaticGravity: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						case NorthWestGravity: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						case WestGravity: | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -164,8 +169,6 @@ gravitate(Client *c, Bool invert) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						case SouthEastGravity: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							dx = -(c->w + c->border); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						default: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(invert) { | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -204,7 +207,6 @@ lower(Client *c) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					manage(Window w, XWindowAttributes *wa) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int diff; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						Client *c; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						Window trans; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XSetWindowAttributes twa; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -224,7 +226,7 @@ manage(Window w, XWindowAttributes *wa) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						c->proto = getproto(c->win); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						setsize(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XSelectInput(dpy, c->win, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								StructureNotifyMask | PropertyChangeMask | EnterWindowMask); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							StructureNotifyMask | PropertyChangeMask | EnterWindowMask); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XGetTransientForHint(dpy, c->win, &trans); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						twa.override_redirect = 1; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						twa.background_pixmap = ParentRelative; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -237,6 +239,8 @@ manage(Window w, XWindowAttributes *wa) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						settags(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(clients) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							clients->prev = c; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						c->next = clients; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						clients = c; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -264,6 +268,7 @@ manage(Window w, XWindowAttributes *wa) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							XMapRaised(dpy, c->win); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							XMapRaised(dpy, c->title); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -273,9 +278,15 @@ pop(Client *c) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						Client **l; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						for(l = &clients; *l && *l != c; l = &(*l)->next); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(c->prev) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							c->prev->next = c->next; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(c->next) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							c->next->prev = c->prev; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						*l = c->next; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						c->next = clients; /* pop */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(clients) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							clients->prev = c; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						c->next = clients; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						clients = c; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						arrange(NULL); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -439,13 +450,18 @@ unmanage(Client *c) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XDestroyWindow(dpy, c->title); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						for(l = &clients; *l && *l != c; l = &(*l)->next); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(c->prev) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							c->prev->next = c->next; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(c->next) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							c->next->prev = c->prev; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						*l = c->next; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						for(l = &clients; *l; l = &(*l)->next) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if((*l)->revert == c) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								(*l)->revert = NULL; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(sel == c) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							sel = sel->revert ? sel->revert : clients; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(sel == c) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							sel = getnext(c->next, tsel); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(!sel) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								sel = getprev(c->prev); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(!sel) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								sel = clients; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						free(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XSync(dpy, False); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |