Add enumeration for sel.mode
This patch also prevents sel.mode from increasing beyond 2. It is almost impossible, but sel.mode may overflow if mouse is moved around for too long while selecting.
This commit is contained in:
		
				
					committed by
					
						 Roberto E. Vargas Caballero
						Roberto E. Vargas Caballero
					
				
			
			
				
	
			
			
			
						parent
						
							22571ea4e8
						
					
				
				
					commit
					1811b6030c
				
			
							
								
								
									
										23
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								st.c
									
									
									
									
									
								
							| @@ -162,6 +162,12 @@ enum window_state { | ||||
| 	WIN_FOCUSED = 2 | ||||
| }; | ||||
|  | ||||
| enum selection_mode { | ||||
| 	SEL_IDLE = 0, | ||||
| 	SEL_EMPTY = 1, | ||||
| 	SEL_READY = 2 | ||||
| }; | ||||
|  | ||||
| enum selection_type { | ||||
| 	SEL_REGULAR = 1, | ||||
| 	SEL_RECTANGULAR = 2 | ||||
| @@ -643,7 +649,7 @@ void | ||||
| selinit(void) { | ||||
| 	memset(&sel.tclick1, 0, sizeof(sel.tclick1)); | ||||
| 	memset(&sel.tclick2, 0, sizeof(sel.tclick2)); | ||||
| 	sel.mode = 0; | ||||
| 	sel.mode = SEL_IDLE; | ||||
| 	sel.ob.x = -1; | ||||
| 	sel.primary = NULL; | ||||
| 	sel.clipboard = NULL; | ||||
| @@ -897,7 +903,7 @@ bpress(XEvent *e) { | ||||
|  | ||||
| 		/* Clear previous selection, logically and visually. */ | ||||
| 		selclear(NULL); | ||||
| 		sel.mode = 1; | ||||
| 		sel.mode = SEL_EMPTY; | ||||
| 		sel.type = SEL_REGULAR; | ||||
| 		sel.oe.x = sel.ob.x = x2col(e->xbutton.x); | ||||
| 		sel.oe.y = sel.ob.y = y2row(e->xbutton.y); | ||||
| @@ -920,7 +926,7 @@ bpress(XEvent *e) { | ||||
| 		 * make clicks visible | ||||
| 		 */ | ||||
| 		if(sel.snap != 0) { | ||||
| 			sel.mode++; | ||||
| 			sel.mode = SEL_READY; | ||||
| 			tsetdirt(sel.nb.y, sel.ne.y); | ||||
| 		} | ||||
| 		sel.tclick2 = sel.tclick1; | ||||
| @@ -1142,13 +1148,12 @@ brelease(XEvent *e) { | ||||
| 	if(e->xbutton.button == Button2) { | ||||
| 		selpaste(NULL); | ||||
| 	} else if(e->xbutton.button == Button1) { | ||||
| 		if(sel.mode < 2) { | ||||
| 			selclear(NULL); | ||||
| 		} else { | ||||
| 		if(sel.mode == SEL_READY) { | ||||
| 			getbuttoninfo(e); | ||||
| 			selcopy(e->xbutton.time); | ||||
| 		} | ||||
| 		sel.mode = 0; | ||||
| 		} else | ||||
| 			selclear(NULL); | ||||
| 		sel.mode = SEL_IDLE; | ||||
| 		tsetdirt(sel.nb.y, sel.ne.y); | ||||
| 	} | ||||
| } | ||||
| @@ -1165,7 +1170,7 @@ bmotion(XEvent *e) { | ||||
| 	if(!sel.mode) | ||||
| 		return; | ||||
|  | ||||
| 	sel.mode++; | ||||
| 	sel.mode = SEL_READY; | ||||
| 	oldey = sel.oe.y; | ||||
| 	oldex = sel.oe.x; | ||||
| 	oldsby = sel.nb.y; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user