Add enumeration for sel.mode - st - Simple Terminal
       
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 1811b6030cd9ac6bb938449eef778c6f54ab0e49
 (DIR) parent 22571ea4e8729efee6940b704666566b46e42e76
 (HTM) 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:
         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;