From 1acbfe6dbcde84c5df3afd97868598344d43a7d7 Mon Sep 17 00:00:00 2001 From: ketmar Date: Thu, 3 Jul 2014 18:42:29 +0300 Subject: [PATCH] ctrl+shift+lmb does 'simple' selection --- src/x11evtmouse.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/x11evtmouse.c b/src/x11evtmouse.c index e674e2b..5c8b9cb 100644 --- a/src/x11evtmouse.c +++ b/src/x11evtmouse.c @@ -67,6 +67,8 @@ static void getButtonInfo (K8Term *term, XEvent *e, int *b, int *x, int *y) { } +static int exselect = 0; //EVIL! + static void xevtcbbpress (XEvent *e) { if (curterm == NULL) return; // @@ -91,6 +93,7 @@ static void xevtcbbpress (XEvent *e) { if ((e->xbutton.state&(ShiftMask|Mod1Mask)) != 0) { switch (e->xbutton.button) { case Button1: // left + exselect = e->xbutton.state&ControlMask; if (curterm->sel.bx != -1) k8t_tmDirty(curterm, curterm->sel.b.y, curterm->sel.e.y); curterm->sel.mode = 1; curterm->sel.b.y = curterm->sel.e.y = curterm->row+1; @@ -150,6 +153,11 @@ static int selpNonWord (int x, const K8TGlyph *g) { } +static int selpNonSpace (int x, const K8TGlyph *g) { + return ((g->attr&K8T_ATTR_GFX) == 0 && g->c[0] != ' '); +} + + static void xevtcbbrelease (XEvent *e) { if (curterm == NULL) return; // @@ -193,7 +201,10 @@ static void xevtcbbrelease (XEvent *e) { if (K8T_ISGFX(l[curterm->sel.bx].attr)) { doSelect(l, selpGfx); } else { - if (isAlpha(l[curterm->sel.bx].c[0])) { + if (exselect && l[curterm->sel.bx].c[0] != ' ') { + // simple + doSelect(l, selpNonSpace); + } else if (isAlpha(l[curterm->sel.bx].c[0])) { doSelect(l, selpWord); } else if (l[curterm->sel.bx].c[0] == ' ') { // find first non-blank char -- 2.11.4.GIT