WIN_FOCUSED = 2
};
+enum selection_mode {
+ SEL_IDLE = 0,
+ SEL_EMPTY = 1,
+ SEL_READY = 2
+};
+
enum selection_type {
SEL_REGULAR = 1,
SEL_RECTANGULAR = 2
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;
bool
selected(int x, int y) {
+ if(sel.mode == SEL_EMPTY)
+ return false;
+
if(sel.type == SEL_RECTANGULAR)
return BETWEEN(y, sel.nb.y, sel.ne.y)
&& BETWEEN(x, sel.nb.x, sel.ne.x);
/* 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);
}
selnormalize();
- /*
- * Draw selection, unless it's regular and we don't want to
- * make clicks visible
- */
- if(sel.snap != 0) {
- sel.mode++;
- tsetdirt(sel.nb.y, sel.ne.y);
- }
+ if(sel.snap != 0)
+ sel.mode = SEL_READY;
+ tsetdirt(sel.nb.y, sel.ne.y);
sel.tclick2 = sel.tclick1;
sel.tclick1 = now;
}
xev.selection = xsre->selection;
xev.target = xsre->target;
xev.time = xsre->time;
- if (xsre->property == None)
- xsre->property = xsre->target;
+ if (xsre->property == None)
+ xsre->property = xsre->target;
/* reject */
xev.property = None;
sel.primary = str;
XSetSelectionOwner(xw.dpy, XA_PRIMARY, xw.win, t);
- if (XGetSelectionOwner(xw.dpy, XA_PRIMARY) != xw.win)
- selclear(0);
+ if (XGetSelectionOwner(xw.dpy, XA_PRIMARY) != xw.win)
+ selclear(0);
}
void
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);
}
}
if(!sel.mode)
return;
- sel.mode++;
+ sel.mode = SEL_READY;
oldey = sel.oe.y;
oldex = sel.oe.x;
oldsby = sel.nb.y;