| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -79,7 +79,7 @@ movemouse(Client *c) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								XSync(dpy, False); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								*c->x = ocx + (ev.xmotion.x - x1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								*c->y = ocy + (ev.xmotion.y - y1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								resize(c, False); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								resize(c, False, TopLeft); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							case ButtonRelease: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								XUngrabPointer(dpy, CurrentTime); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -93,6 +93,7 @@ resizemouse(Client *c) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						XEvent ev; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int ocx, ocy; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						Corner sticky; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						ocx = *c->x; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						ocy = *c->y; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -113,7 +114,18 @@ resizemouse(Client *c) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								*c->h = abs(ocy - ev.xmotion.y); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								*c->x = (ocx <= ev.xmotion.x) ? ocx : ocx - *c->w; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								*c->y = (ocy <= ev.xmotion.y) ? ocy : ocy - *c->h; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								resize(c, True); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if(ocx <= ev.xmotion.x) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									if(ocy <= ev.xmotion.y) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										sticky = TopLeft; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									else | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										sticky = BottomLeft; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									if(ocy <= ev.xmotion.y) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										sticky = TopRight; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									else | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										sticky = BottomRight; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								resize(c, True, sticky); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							case ButtonRelease: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								XUngrabPointer(dpy, CurrentTime); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -153,24 +165,27 @@ buttonpress(XEvent *e) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						else if((c = getclient(ev->window))) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(arrange == dotile && !c->isfloat) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if((ev->state & ControlMask) && (ev->button == Button1)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									zoom(NULL); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								return; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							/* floating windows */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							higher(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							switch(ev->button) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							default: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							case Button1: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								movemouse(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if(arrange == dotile && !c->isfloat) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									if((ev->state & ControlMask) && (ev->button == Button1)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										zoom(NULL); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									higher(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									movemouse(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							case Button2: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								lower(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							case Button3: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								resizemouse(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if(arrange == dofloat || c->isfloat) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									higher(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									resizemouse(c); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -197,7 +212,7 @@ configurerequest(XEvent *e) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(ev->value_mask & CWBorderWidth) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								c->border = 1; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							gravitate(c, False); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							resize(c, True); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							resize(c, True, TopLeft); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						wc.x = ev->x; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |