all repos — st @ 1811b6030cd9ac6bb938449eef778c6f54ab0e49

st (suckless terminal) config

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.
noname noname@inventati.org
commit

1811b6030cd9ac6bb938449eef778c6f54ab0e49

parent

22571ea4e8729efee6940b704666566b46e42e76

1 files changed, 14 insertions(+), 9 deletions(-)

jump to
M st.cst.c

@@ -162,6 +162,12 @@ WIN_VISIBLE = 1,

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 @@ clock_gettime(CLOCK_MONOTONIC, &now);

/* 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 @@ * Draw selection, unless it's regular and we don't want to

* 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 @@

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 @@

if(!sel.mode) return; - sel.mode++; + sel.mode = SEL_READY; oldey = sel.oe.y; oldex = sel.oe.x; oldsby = sel.nb.y;