Fixing the selection handling to allow one char selection.
Thanks Alexander Sedov <alex0player@gmail.com> for suggesting the fix!
This commit is contained in:
		
							
								
								
									
										19
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								st.c
									
									
									
									
									
								
							@@ -785,11 +785,8 @@ bpress(XEvent *e) {
 | 
			
		||||
		sel.ey = sel.by = y2row(e->xbutton.y);
 | 
			
		||||
 | 
			
		||||
		/*
 | 
			
		||||
		 * Snap handling.
 | 
			
		||||
		 * If user clicks are fasst enough (e.g. below timeouts),
 | 
			
		||||
		 * we ignore if his hand slipped left or down and accidentally
 | 
			
		||||
		 * selected more; we are just snapping to whatever we're
 | 
			
		||||
		 * snapping.
 | 
			
		||||
		 * If the user clicks below predefined timeouts specific
 | 
			
		||||
		 * snapping behaviour is exposed.
 | 
			
		||||
		 */
 | 
			
		||||
		if(TIMEDIFF(now, sel.tclick2) <= tripleclicktimeout) {
 | 
			
		||||
			sel.snap = SNAP_LINE;
 | 
			
		||||
@@ -809,7 +806,8 @@ bpress(XEvent *e) {
 | 
			
		||||
		 * Draw selection, unless it's regular and we don't want to
 | 
			
		||||
		 * make clicks visible
 | 
			
		||||
		 */
 | 
			
		||||
		if (sel.snap != 0) {
 | 
			
		||||
		if(sel.snap != 0) {
 | 
			
		||||
			sel.mode++;
 | 
			
		||||
			tsetdirt(sel.b.y, sel.e.y);
 | 
			
		||||
			draw();
 | 
			
		||||
		}
 | 
			
		||||
@@ -987,14 +985,14 @@ brelease(XEvent *e) {
 | 
			
		||||
	if(e->xbutton.button == Button2) {
 | 
			
		||||
		selpaste(NULL);
 | 
			
		||||
	} else if(e->xbutton.button == Button1) {
 | 
			
		||||
		sel.mode = 0;
 | 
			
		||||
		getbuttoninfo(e);
 | 
			
		||||
		term.dirty[sel.ey] = 1;
 | 
			
		||||
		if(sel.bx == sel.ex && sel.by == sel.ey) {
 | 
			
		||||
		if(sel.mode < 2) {
 | 
			
		||||
			sel.bx = -1;
 | 
			
		||||
		} else {
 | 
			
		||||
			getbuttoninfo(e);
 | 
			
		||||
			selcopy();
 | 
			
		||||
		}
 | 
			
		||||
		sel.mode = 0;
 | 
			
		||||
		term.dirty[sel.ey] = 1;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1010,6 +1008,7 @@ bmotion(XEvent *e) {
 | 
			
		||||
	if(!sel.mode)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	sel.mode++;
 | 
			
		||||
	oldey = sel.ey;
 | 
			
		||||
	oldex = sel.ex;
 | 
			
		||||
	oldsby = sel.b.y;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user