# st

Unnamed repository; edit this file 'description' to name the repository.

| Log | Files | Refs | README | LICENSE

    commit 1811b6030cd9ac6bb938449eef778c6f54ab0e49
    parent 22571ea4e8729efee6940b704666566b46e42e76
    Author: noname <noname@inventati.org>
    Date:   Fri,  1 May 2015 17:13:13 +0000

    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.

    Diffstat:
    Mst.c | 23++++++++++++++---------

    1 file changed, 14 insertions(+), 9 deletions(-)
    diff --git a/st.c b/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;