@ -16,19 +16,19 @@ resizetitle(Client *c)  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
						int  i ;   
			
		
	
		
			
				
					
  
			
		
	
		
			
				
						c - > b w=  0 ;   
			
		
	
		
			
				
						c - > t w=  0 ;   
			
		
	
		
			
				
						for ( i  =  0 ;  i  <  TLast ;  i + + )   
			
		
	
		
			
				
							if ( c - > tags [ i ] )   
			
		
	
		
			
				
								c - > b w+ =  textw ( c - > tags [ i ] ) ;   
			
		
	
		
			
				
						c - > b w+ =  textw ( c - > name ) ;   
			
		
	
		
			
				
						if ( c - > bw  >  * c - > w )   
			
		
	
		
			
				
							c - > bw  =  * c - > w  +  2 ;   
			
		
	
		
			
				
						c - > bx  =  * c - > x  +  * c - > w  -  c - > b w+  2 ;   
			
		
	
		
			
				
						c - > by  =  * c - > y ;   
			
		
	
		
			
				
								c - > t w+ =  textw ( c - > tags [ i ] ) ;   
			
		
	
		
			
				
						c - > t w+ =  textw ( c - > name ) ;   
			
		
	
		
			
				
						if ( c - > tw  >  c - > w )   
			
		
	
		
			
				
							c - > tw  =  c - > w  +  2 ;   
			
		
	
		
			
				
						c - > tx  =  c - > x  +  c - > w  -  c - > t w+  2 ;   
			
		
	
		
			
				
						c - > ty  =  c - > y ;   
			
		
	
		
			
				
						if ( c - > tags [ tsel ] )   
			
		
	
		
			
				
							XMoveResizeWindow ( dpy ,  c - > title ,  c - > b x,  c - > b y,  c - > b w,  c - > b h) ;   
			
		
	
		
			
				
							XMoveResizeWindow ( dpy ,  c - > title ,  c - > t x,  c - > t y,  c - > t w,  c - > t h) ;   
			
		
	
		
			
				
						else   
			
		
	
		
			
				
							XMoveResizeWindow ( dpy ,  c - > title ,  c - > b x+  2  *  sw ,  c - > b y,  c - > b w,  c - > b h) ;   
			
		
	
		
			
				
							XMoveResizeWindow ( dpy ,  c - > title ,  c - > t x+  2  *  sw ,  c - > t y,  c - > t w,  c - > t h) ;   
			
		
	
		
			
				
					
  
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -43,8 +43,8 @@ xerrordummy(Display *dsply, XErrorEvent *ee)  
			
		
	
		
			
				
					void  
			
		
	
		
			
				
					ban ( Client  * c )  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
						XMoveWindow ( dpy ,  c - > win ,  * c - > x  +  2  *  sw ,  * c - > y ) ;   
			
		
	
		
			
				
						XMoveWindow ( dpy ,  c - > title ,  c - > b x+  2  *  sw ,  c - > b y) ;   
			
		
	
		
			
				
						XMoveWindow ( dpy ,  c - > win ,  c - > x  +  2  *  sw ,  c - > y ) ;   
			
		
	
		
			
				
						XMoveWindow ( dpy ,  c - > title ,  c - > t x+  2  *  sw ,  c - > t y) ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
					void  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -128,12 +128,12 @@ gravitate(Client *c, Bool invert)  
			
		
	
		
			
				
						case  EastGravity :   
			
		
	
		
			
				
						case  CenterGravity :   
			
		
	
		
			
				
						case  WestGravity :   
			
		
	
		
			
				
							dy  =  - ( * c - > h  /  2 )  +  c - > border ;   
			
		
	
		
			
				
							dy  =  - ( c - > h  /  2 )  +  c - > border ;   
			
		
	
		
			
				
							break ;   
			
		
	
		
			
				
						case  SouthEastGravity :   
			
		
	
		
			
				
						case  SouthGravity :   
			
		
	
		
			
				
						case  SouthWestGravity :   
			
		
	
		
			
				
							dy  =  - ( * c - > h ) ;   
			
		
	
		
			
				
							dy  =  - ( c - > h ) ;   
			
		
	
		
			
				
							break ;   
			
		
	
		
			
				
						default :   
			
		
	
		
			
				
							break ;   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -149,12 +149,12 @@ gravitate(Client *c, Bool invert)  
			
		
	
		
			
				
						case  NorthGravity :   
			
		
	
		
			
				
						case  CenterGravity :   
			
		
	
		
			
				
						case  SouthGravity :   
			
		
	
		
			
				
							dx  =  - ( * c - > w  /  2 )  +  c - > border ;   
			
		
	
		
			
				
							dx  =  - ( c - > w  /  2 )  +  c - > border ;   
			
		
	
		
			
				
							break ;   
			
		
	
		
			
				
						case  NorthEastGravity :   
			
		
	
		
			
				
						case  EastGravity :   
			
		
	
		
			
				
						case  SouthEastGravity :   
			
		
	
		
			
				
							dx  =  - ( * c - > w  +  c - > border ) ;   
			
		
	
		
			
				
							dx  =  - ( c - > w  +  c - > border ) ;   
			
		
	
		
			
				
							break ;   
			
		
	
		
			
				
						default :   
			
		
	
		
			
				
							break ;   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -164,8 +164,8 @@ gravitate(Client *c, Bool invert)  
			
		
	
		
			
				
							dx  =  - dx ;   
			
		
	
		
			
				
							dy  =  - dy ;   
			
		
	
		
			
				
						}   
			
		
	
		
			
				
						* c - > x  + =  dx ;   
			
		
	
		
			
				
						* c - > y  + =  dy ;   
			
		
	
		
			
				
						c - > x  + =  dx ;   
			
		
	
		
			
				
						c - > y  + =  dy ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
					void  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -203,19 +203,14 @@ manage(Window w, XWindowAttributes *wa)  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
						c  =  emallocz ( sizeof ( Client ) ) ;   
			
		
	
		
			
				
						c - > win  =  w ;   
			
		
	
		
			
				
						c - > bx  =  c - > f x=  c - > tx  =  wa - > x ;   
			
		
	
		
			
				
						c - > by  =  c - > f y=  c - > ty  =  wa - > y ;   
			
		
	
		
			
				
						c - > bw  =  c - > f w=  c - > tw  =  wa - > width ;   
			
		
	
		
			
				
						c - > fh  =  c - > t h=  wa - > height ;   
			
		
	
		
			
				
						c - > b h=  bh ;   
			
		
	
		
			
				
						c - > x  =  c - > tx  =  wa - > x ;   
			
		
	
		
			
				
						c - > y  =  c - > ty  =  wa - > y ;   
			
		
	
		
			
				
						c - > w  =  c - > tw  =  wa - > width ;   
			
		
	
		
			
				
						c - > h  =  wa - > height ;   
			
		
	
		
			
				
						c - > t h=  bh ;   
			
		
	
		
			
				
					
  
			
		
	
		
			
				
						diff  =  sw  -  c - > fw ;   
			
		
	
		
			
				
						c - > fx  =  random ( )  %  ( diff  ?  diff  :  1 ) ;   
			
		
	
		
			
				
						diff  =  sh  -  c - > fh  -  bh ;   
			
		
	
		
			
				
						c - > fy  =  random ( )  %  ( diff  ?  diff  :  1 ) ;   
			
		
	
		
			
				
					
  
			
		
	
		
			
				
						if ( c - > fy  <  bh )   
			
		
	
		
			
				
							c - > by  =  c - > fy  =  c - > ty  =  bh ;   
			
		
	
		
			
				
						if ( c - > y  <  bh )   
			
		
	
		
			
				
							c - > y  =  c - > ty  =  bh ;   
			
		
	
		
			
				
					
  
			
		
	
		
			
				
						c - > border  =  1 ;   
			
		
	
		
			
				
						c - > proto  =  getproto ( c - > win ) ;   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -227,7 +222,7 @@ manage(Window w, XWindowAttributes *wa)  
			
		
	
		
			
				
						twa . background_pixmap  =  ParentRelative ;   
			
		
	
		
			
				
						twa . event_mask  =  ExposureMask ;   
			
		
	
		
			
				
					
  
			
		
	
		
			
				
						c - > title  =  XCreateWindow ( dpy ,  root ,  c - > b x,  c - > b y,  c - > b w,  c - > b h,   
			
		
	
		
			
				
						c - > title  =  XCreateWindow ( dpy ,  root ,  c - > t x,  c - > t y,  c - > t w,  c - > t h,   
			
		
	
		
			
				
								0 ,  DefaultDepth ( dpy ,  screen ) ,  CopyFromParent ,   
			
		
	
		
			
				
								DefaultVisual ( dpy ,  screen ) ,   
			
		
	
		
			
				
								CWOverrideRedirect  |  CWBackPixmap  |  CWEventMask ,  & twa ) ;   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -251,9 +246,7 @@ manage(Window w, XWindowAttributes *wa)  
			
		
	
		
			
				
									( c - > maxw  = =  c - > minw )  & &  ( c - > maxh  = =  c - > minh ) ) ;   
			
		
	
		
			
				
					
  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
						setgeom ( c ) ;   
			
		
	
		
			
				
						settitle ( c ) ;   
			
		
	
		
			
				
					
  
			
		
	
		
			
				
						arrange ( NULL ) ;   
			
		
	
		
			
				
					
  
			
		
	
		
			
				
						/* mapping the window now prevents flicker */   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -273,10 +266,10 @@ maximize(Arg *arg)  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
						if ( ! sel )   
			
		
	
		
			
				
							return ;   
			
		
	
		
			
				
						* sel - > x  =  sx ;   
			
		
	
		
			
				
						* sel - > y  =  sy  +  bh ;   
			
		
	
		
			
				
						* sel - > w  =  sw  -  2  *  sel - > border ;   
			
		
	
		
			
				
						* sel - > h  =  sh  -  2  *  sel - > border  -  bh ;   
			
		
	
		
			
				
						sel - > x  =  sx ;   
			
		
	
		
			
				
						sel - > y  =  sy  +  bh ;   
			
		
	
		
			
				
						sel - > w  =  sw  -  2  *  sel - > border ;   
			
		
	
		
			
				
						sel - > h  =  sh  -  2  *  sel - > border  -  bh ;   
			
		
	
		
			
				
						higher ( sel ) ;   
			
		
	
		
			
				
						resize ( sel ,  False ,  TopLeft ) ;   
			
		
	
		
			
				
					}  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -297,43 +290,43 @@ void  
			
		
	
		
			
				
					resize ( Client  * c ,  Bool  inc ,  Corner  sticky )  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
						XConfigureEvent  e ;   
			
		
	
		
			
				
						int  right  =  * c - > x  +  * c - > w ;   
			
		
	
		
			
				
						int  bottom  =  * c - > y  +  * c - > h ;   
			
		
	
		
			
				
						int  right  =  c - > x  +  c - > w ;   
			
		
	
		
			
				
						int  bottom  =  c - > y  +  c - > h ;   
			
		
	
		
			
				
					
  
			
		
	
		
			
				
						if ( inc )  {   
			
		
	
		
			
				
							if ( c - > incw )   
			
		
	
		
			
				
								* c - > w  - =  ( * c - > w  -  c - > basew )  %  c - > incw ;   
			
		
	
		
			
				
								c - > w  - =  ( c - > w  -  c - > basew )  %  c - > incw ;   
			
		
	
		
			
				
							if ( c - > inch )   
			
		
	
		
			
				
								* c - > h  - =  ( * c - > h  -  c - > baseh )  %  c - > inch ;   
			
		
	
		
			
				
								c - > h  - =  ( c - > h  -  c - > baseh )  %  c - > inch ;   
			
		
	
		
			
				
						}   
			
		
	
		
			
				
						if ( * c - > x  >  sw )  /* might happen on restart */   
			
		
	
		
			
				
							* c - > x  =  sw  -  * c - > w ;   
			
		
	
		
			
				
						if ( * c - > y  >  sh )   
			
		
	
		
			
				
							* c - > y  =  sh  -  * c - > h ;   
			
		
	
		
			
				
						if ( c - > minw  & &  * c - > w  <  c - > minw )   
			
		
	
		
			
				
							* c - > w  =  c - > minw ;   
			
		
	
		
			
				
						if ( c - > minh  & &  * c - > h  <  c - > minh )   
			
		
	
		
			
				
							* c - > h  =  c - > minh ;   
			
		
	
		
			
				
						if ( c - > maxw  & &  * c - > w  >  c - > maxw )   
			
		
	
		
			
				
							* c - > w  =  c - > maxw ;   
			
		
	
		
			
				
						if ( c - > maxh  & &  * c - > h  >  c - > maxh )   
			
		
	
		
			
				
							* c - > h  =  c - > maxh ;   
			
		
	
		
			
				
						if ( c - > x  >  sw )  /* might happen on restart */   
			
		
	
		
			
				
							c - > x  =  sw  -  c - > w ;   
			
		
	
		
			
				
						if ( c - > y  >  sh )   
			
		
	
		
			
				
							c - > y  =  sh  -  c - > h ;   
			
		
	
		
			
				
						if ( c - > minw  & &  c - > w  <  c - > minw )   
			
		
	
		
			
				
							c - > w  =  c - > minw ;   
			
		
	
		
			
				
						if ( c - > minh  & &  c - > h  <  c - > minh )   
			
		
	
		
			
				
							c - > h  =  c - > minh ;   
			
		
	
		
			
				
						if ( c - > maxw  & &  c - > w  >  c - > maxw )   
			
		
	
		
			
				
							c - > w  =  c - > maxw ;   
			
		
	
		
			
				
						if ( c - > maxh  & &  c - > h  >  c - > maxh )   
			
		
	
		
			
				
							c - > h  =  c - > maxh ;   
			
		
	
		
			
				
						if ( sticky  = =  TopRight  | |  sticky  = =  BotRight )   
			
		
	
		
			
				
							* c - > x  =  right  -  * c - > w ;   
			
		
	
		
			
				
							c - > x  =  right  -  c - > w ;   
			
		
	
		
			
				
						if ( sticky  = =  BotLeft  | |  sticky  = =  BotRight )   
			
		
	
		
			
				
							* c - > y  =  bottom  -  * c - > h ;   
			
		
	
		
			
				
							c - > y  =  bottom  -  c - > h ;   
			
		
	
		
			
				
					
  
			
		
	
		
			
				
						resizetitle ( c ) ;   
			
		
	
		
			
				
						XSetWindowBorderWidth ( dpy ,  c - > win ,  1 ) ;   
			
		
	
		
			
				
						XMoveResizeWindow ( dpy ,  c - > win ,  * c - > x ,  * c - > y ,  * c - > w ,  * c - > h ) ;   
			
		
	
		
			
				
						XMoveResizeWindow ( dpy ,  c - > win ,  c - > x ,  c - > y ,  c - > w ,  c - > h ) ;   
			
		
	
		
			
				
					
  
			
		
	
		
			
				
						e . type  =  ConfigureNotify ;   
			
		
	
		
			
				
						e . event  =  c - > win ;   
			
		
	
		
			
				
						e . window  =  c - > win ;   
			
		
	
		
			
				
						e . x  =  * c - > x ;   
			
		
	
		
			
				
						e . y  =  * c - > y ;   
			
		
	
		
			
				
						e . width  =  * c - > w ;   
			
		
	
		
			
				
						e . height  =  * c - > h ;   
			
		
	
		
			
				
						e . x  =  c - > x ;   
			
		
	
		
			
				
						e . y  =  c - > y ;   
			
		
	
		
			
				
						e . width  =  c - > w ;   
			
		
	
		
			
				
						e . height  =  c - > h ;   
			
		
	
		
			
				
						e . border_width  =  c - > border ;   
			
		
	
		
			
				
						e . above  =  None ;   
			
		
	
		
			
				
						e . override_redirect  =  False ;   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -341,23 +334,6 @@ resize(Client *c, Bool inc, Corner sticky)  
			
		
	
		
			
				
						XSync ( dpy ,  False ) ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
					void  
			
		
	
		
			
				
					setgeom ( Client  * c )  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
						if ( ( arrange  = =  dotile )  & &  ! c - > isfloat )  {   
			
		
	
		
			
				
							c - > x  =  & c - > tx ;   
			
		
	
		
			
				
							c - > y  =  & c - > ty ;   
			
		
	
		
			
				
							c - > w  =  & c - > tw ;   
			
		
	
		
			
				
							c - > h  =  & c - > th ;   
			
		
	
		
			
				
						}   
			
		
	
		
			
				
						else  {   
			
		
	
		
			
				
							c - > x  =  & c - > fx ;   
			
		
	
		
			
				
							c - > y  =  & c - > fy ;   
			
		
	
		
			
				
							c - > w  =  & c - > fw ;   
			
		
	
		
			
				
							c - > h  =  & c - > fh ;   
			
		
	
		
			
				
						}   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
  
			
		
	
		
			
				
					void  
			
		
	
		
			
				
					setsize ( Client  * c )  
			
		
	
		
			
				
					{