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