aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvi Halachmi (:avih) <avihpit@yahoo.com>2019-10-10 23:42:30 +0300
committerHiltjo Posthuma <hiltjo@codemadness.org>2019-10-13 21:46:31 +0200
commitb6d280de6df30167ce9cf30fadefc362e77729e7 (patch)
tree7e1ab2ec0b42e2149a41f3a6f8165ba11f54f088
parentba7f4d69af62d20e13fea78a408095e017410651 (diff)
downloadst-b6d280de6df30167ce9cf30fadefc362e77729e7.tar.gz
st-b6d280de6df30167ce9cf30fadefc362e77729e7.zip
mouse shortcuts: allow override for all shortcuts
Allow forceselmod to override all mouse shortcuts rather than only selection, and rename it to forcemousemod as it's now more appropriate. This will affect mouse shortcuts which use mask other than XK_ANY_MOD. This does not affect the default behavior because the default mouse shortcuts (wheel) use XK_ANY_MOD, where forceselmod already activated the override also before this change. Previously, if a mouse shortcut was configured with a specific mod and forceselmod was held, then the shortcut did not execute unless the configured mod included forceselmod.
-rw-r--r--config.def.h14
-rw-r--r--x.c12
2 files changed, 13 insertions, 13 deletions
diff --git a/config.def.h b/config.def.h
index 36ff6ce..a0a0d2d 100644
--- a/config.def.h
+++ b/config.def.h
@@ -151,6 +151,13 @@ static unsigned int mousebg = 0;
151static unsigned int defaultattr = 11; 151static unsigned int defaultattr = 11;
152 152
153/* 153/*
154 * Force mouse select/shortcuts while mask is active (when MODE_MOUSE is set).
155 * Note that if you want to use ShiftMask with selmasks, set this to an other
156 * modifier, set to 0 to not use it.
157 */
158static uint forcemousemod = ShiftMask;
159
160/*
154 * Internal mouse shortcuts. 161 * Internal mouse shortcuts.
155 * Beware that overloading Button1 will disable the selection. 162 * Beware that overloading Button1 will disable the selection.
156 */ 163 */
@@ -214,13 +221,6 @@ static KeySym mappedkeys[] = { -1 };
214static uint ignoremod = Mod2Mask|XK_SWITCH_MOD; 221static uint ignoremod = Mod2Mask|XK_SWITCH_MOD;
215 222
216/* 223/*
217 * Override mouse-select while mask is active (when MODE_MOUSE is set).
218 * Note that if you want to use ShiftMask with selmasks, set this to an other
219 * modifier, set to 0 to not use it.
220 */
221static uint forceselmod = ShiftMask;
222
223/*
224 * This is the huge key array which defines all compatibility to the Linux 224 * This is the huge key array which defines all compatibility to the Linux
225 * world. Please decide about changes wisely. 225 * world. Please decide about changes wisely.
226 */ 226 */
diff --git a/x.c b/x.c
index 2a05a81..c967caf 100644
--- a/x.c
+++ b/x.c
@@ -340,7 +340,7 @@ void
340mousesel(XEvent *e, int done) 340mousesel(XEvent *e, int done)
341{ 341{
342 int type, seltype = SEL_REGULAR; 342 int type, seltype = SEL_REGULAR;
343 uint state = e->xbutton.state & ~(Button1Mask | forceselmod); 343 uint state = e->xbutton.state & ~(Button1Mask | forcemousemod);
344 344
345 for (type = 1; type < LEN(selmasks); ++type) { 345 for (type = 1; type < LEN(selmasks); ++type) {
346 if (match(selmasks[type], state)) { 346 if (match(selmasks[type], state)) {
@@ -423,14 +423,14 @@ bpress(XEvent *e)
423 MouseShortcut *ms; 423 MouseShortcut *ms;
424 int snap; 424 int snap;
425 425
426 if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) { 426 if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forcemousemod)) {
427 mousereport(e); 427 mousereport(e);
428 return; 428 return;
429 } 429 }
430 430
431 for (ms = mshortcuts; ms < mshortcuts + LEN(mshortcuts); ms++) { 431 for (ms = mshortcuts; ms < mshortcuts + LEN(mshortcuts); ms++) {
432 if (e->xbutton.button == ms->button 432 if (e->xbutton.button == ms->button &&
433 && match(ms->mod, e->xbutton.state)) { 433 match(ms->mod, e->xbutton.state & ~forcemousemod)) {
434 ms->func(&(ms->arg)); 434 ms->func(&(ms->arg));
435 return; 435 return;
436 } 436 }
@@ -650,7 +650,7 @@ xsetsel(char *str)
650void 650void
651brelease(XEvent *e) 651brelease(XEvent *e)
652{ 652{
653 if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) { 653 if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forcemousemod)) {
654 mousereport(e); 654 mousereport(e);
655 return; 655 return;
656 } 656 }
@@ -664,7 +664,7 @@ brelease(XEvent *e)
664void 664void
665bmotion(XEvent *e) 665bmotion(XEvent *e)
666{ 666{
667 if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) { 667 if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forcemousemod)) {
668 mousereport(e); 668 mousereport(e);
669 return; 669 return;
670 } 670 }