diff options
Diffstat (limited to 'st.c')
| -rw-r--r-- | st.c | 23 | 
1 files changed, 14 insertions, 9 deletions
@@ -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;  | 
