|
|
@ -453,7 +453,7 @@ static inline bool selected(int, int); |
|
|
|
static char *getsel(void); |
|
|
|
static char *getsel(void); |
|
|
|
static void selcopy(Time); |
|
|
|
static void selcopy(Time); |
|
|
|
static void selscroll(int, int); |
|
|
|
static void selscroll(int, int); |
|
|
|
static void selsnap(int, int *, int *, int); |
|
|
|
static void selsnap(int *, int *, int); |
|
|
|
static int x2col(int); |
|
|
|
static int x2col(int); |
|
|
|
static int y2row(int); |
|
|
|
static int y2row(int); |
|
|
|
static void getbuttoninfo(XEvent *); |
|
|
|
static void getbuttoninfo(XEvent *); |
|
|
@ -695,8 +695,8 @@ selnormalize(void) { |
|
|
|
sel.nb.y = MIN(sel.ob.y, sel.oe.y); |
|
|
|
sel.nb.y = MIN(sel.ob.y, sel.oe.y); |
|
|
|
sel.ne.y = MAX(sel.ob.y, sel.oe.y); |
|
|
|
sel.ne.y = MAX(sel.ob.y, sel.oe.y); |
|
|
|
|
|
|
|
|
|
|
|
selsnap(sel.snap, &sel.nb.x, &sel.nb.y, -1); |
|
|
|
selsnap(&sel.nb.x, &sel.nb.y, -1); |
|
|
|
selsnap(sel.snap, &sel.ne.x, &sel.ne.y, +1); |
|
|
|
selsnap(&sel.ne.x, &sel.ne.y, +1); |
|
|
|
|
|
|
|
|
|
|
|
/* expand selection over line breaks */ |
|
|
|
/* expand selection over line breaks */ |
|
|
|
if (sel.type == SEL_RECTANGULAR) |
|
|
|
if (sel.type == SEL_RECTANGULAR) |
|
|
@ -720,12 +720,12 @@ selected(int x, int y) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void |
|
|
|
void |
|
|
|
selsnap(int mode, int *x, int *y, int direction) { |
|
|
|
selsnap(int *x, int *y, int direction) { |
|
|
|
int newx, newy, xt, yt; |
|
|
|
int newx, newy, xt, yt; |
|
|
|
bool delim, prevdelim; |
|
|
|
bool delim, prevdelim; |
|
|
|
Glyph *gp, *prevgp; |
|
|
|
Glyph *gp, *prevgp; |
|
|
|
|
|
|
|
|
|
|
|
switch(mode) { |
|
|
|
switch(sel.snap) { |
|
|
|
case SNAP_WORD: |
|
|
|
case SNAP_WORD: |
|
|
|
/*
|
|
|
|
/*
|
|
|
|
* Snap around if the word wraps around at the end or |
|
|
|
* Snap around if the word wraps around at the end or |
|
|
|