URI: 
       Add enumeration for sel.mode - st - simple terminal
  HTML git clone https://git.parazyd.org/st
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 1811b6030cd9ac6bb938449eef778c6f54ab0e49
   DIR parent 22571ea4e8729efee6940b704666566b46e42e76
  HTML 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:
         M st.c                                |      23 ++++++++++++++---------
       
       1 file changed, 14 insertions(+), 9 deletions(-)
       ---
   DIR 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;