void bmotion(XEvent *e) { if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) { mousereport(e); return; } mousesel(e, 0); }
void brelease(XEvent *e) { if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) { mousereport(e); return; } if (e->xbutton.button == Button2) selpaste(NULL); else if (e->xbutton.button == Button1) mousesel(e, 1); }
void bpress(XEvent *e) { struct timespec now; MouseShortcut *ms; if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) { mousereport(e); return; } for (ms = mshortcuts; ms < mshortcuts + mshortcutslen; ms++) { if (e->xbutton.button == ms->b && match(ms->mask, e->xbutton.state)) { ttysend(ms->s, strlen(ms->s)); return; } } if (e->xbutton.button == Button1) { clock_gettime(CLOCK_MONOTONIC, &now); /* Clear previous selection, logically and visually. */ selclear_(NULL); 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); /* * If the user clicks below predefined timeouts specific * snapping behaviour is exposed. */ if (TIMEDIFF(now, sel.tclick2) <= tripleclicktimeout) { sel.snap = SNAP_LINE; } else if (TIMEDIFF(now, sel.tclick1) <= doubleclicktimeout) { sel.snap = SNAP_WORD; } else { sel.snap = 0; } selnormalize(); if (sel.snap != 0) sel.mode = SEL_READY; tsetdirt(sel.nb.y, sel.ne.y); sel.tclick2 = sel.tclick1; sel.tclick1 = now; } }
void brelease(XEvent *e) { if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) { mousereport(e); return; } if (e->xbutton.button == Button2) { xselpaste(); } else if (e->xbutton.button == Button1) { if (sel.mode == SEL_READY) { getbuttoninfo(e); selcopy(e->xbutton.time); } else selclear_(NULL); sel.mode = SEL_IDLE; tsetdirt(sel.nb.y, sel.ne.y); } }
void bpress(XEvent *e) { struct timespec now; MouseShortcut *ms; int snap; if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) { mousereport(e); return; } for (ms = mshortcuts; ms < mshortcuts + LEN(mshortcuts); ms++) { if (e->xbutton.button == ms->b && match(ms->mask, e->xbutton.state)) { ttywrite(ms->s, strlen(ms->s), 1); return; } } if (e->xbutton.button == Button1) { /* * If the user clicks below predefined timeouts specific * snapping behaviour is exposed. */ clock_gettime(CLOCK_MONOTONIC, &now); if (TIMEDIFF(now, xsel.tclick2) <= tripleclicktimeout) { snap = SNAP_LINE; } else if (TIMEDIFF(now, xsel.tclick1) <= doubleclicktimeout) { snap = SNAP_WORD; } else { snap = 0; } xsel.tclick2 = xsel.tclick1; xsel.tclick1 = now; selstart(evcol(e), evrow(e), snap); } }
void bmotion(XEvent *e) { int oldey, oldex, oldsby, oldsey; if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) { mousereport(e); return; } if (!sel.mode) return; sel.mode = SEL_READY; oldey = sel.oe.y; oldex = sel.oe.x; oldsby = sel.nb.y; oldsey = sel.ne.y; getbuttoninfo(e); if (oldey != sel.oe.y || oldex != sel.oe.x) tsetdirt(MIN(sel.nb.y, oldsby), MAX(sel.ne.y, oldsey)); }