diff options
| -rw-r--r-- | st.c | 19 | 
1 files changed, 9 insertions, 10 deletions
| @@ -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; | 
