summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorN-R-K <79544946+N-R-K@users.noreply.github.com>2021-12-01 00:41:22 +0100
committerGitHub <noreply@github.com>2021-12-01 00:41:22 +0100
commit3bc7082f4e08e71fb40944bb085fafbb65f6c8cf (patch)
treea47b2421ab25c4a28257252f6bb9fecfc3797adc
parent68ddbe28d87eed9efe5158cdaa5613e0ca66e3c5 (diff)
downloadnsxiv-3bc7082f4e08e71fb40944bb085fafbb65f6c8cf.tar.zst
fix: send implicit_mod to process_bindings (#176)
* fix: send implicit_mod to process_bindings this solves the edge case where someone might have `ShiftMask + A` in their keybindings compared to a plain `A`. Closes: https://github.com/nsxiv/nsxiv/pull/166#issuecomment-978853136 * code-style: smuggle small style fix in win_draw_bar now mimics autoreload_nop.c functions
-rw-r--r--autoreload_nop.c2
-rw-r--r--main.c10
-rw-r--r--window.c5
3 files changed, 10 insertions, 7 deletions
diff --git a/autoreload_nop.c b/autoreload_nop.c
index 431566d..4d17f54 100644
--- a/autoreload_nop.c
+++ b/autoreload_nop.c
@@ -35,7 +35,7 @@ void arl_setup(arl_t *arl, const char *filepath)
}
bool arl_handle(arl_t *arl)
-{
+{
(void) arl;
return false;
}
diff --git a/main.c b/main.c
index 5bcc90e..713e880 100644
--- a/main.c
+++ b/main.c
@@ -605,15 +605,15 @@ end:
redraw();
}
-static bool process_bindings(const keymap_t *keys, unsigned int len,
- KeySym ksym_or_button, unsigned int state)
+static bool process_bindings(const keymap_t *keys, unsigned int len, KeySym ksym_or_button,
+ unsigned int state, unsigned int implicit_mod)
{
unsigned int i;
bool dirty = false;
for (i = 0; i < len; i++) {
if (keys[i].ksym_or_button == ksym_or_button &&
- MODMASK(keys[i].mask) == MODMASK(state) &&
+ MODMASK(keys[i].mask | implicit_mod) == MODMASK(state) &&
keys[i].cmd.func &&
(keys[i].cmd.mode == MODE_ALL || keys[i].cmd.mode == mode))
{
@@ -652,7 +652,7 @@ static void on_keypress(XKeyEvent *kev)
prefix = prefix * 10 + (int) (key - '0');
return;
} else {
- dirty = process_bindings(keys, ARRLEN(keys), ksym, kev->state & ~sh);
+ dirty = process_bindings(keys, ARRLEN(keys), ksym, kev->state, sh);
}
if (dirty)
redraw();
@@ -668,7 +668,7 @@ static void on_buttonpress(XButtonEvent *bev)
if (mode == MODE_IMAGE) {
set_timeout(reset_cursor, TO_CURSOR_HIDE, true);
reset_cursor();
- dirty = process_bindings(buttons, ARRLEN(buttons), bev->button, bev->state);
+ dirty = process_bindings(buttons, ARRLEN(buttons), bev->button, bev->state, 0);
if (dirty)
redraw();
} else {
diff --git a/window.c b/window.c
index 7a04270..8b45501 100644
--- a/window.c
+++ b/window.c
@@ -466,7 +466,10 @@ static void win_draw_bar(win_t *win)
XftDrawDestroy(d);
}
#else
-static void win_draw_bar(win_t *win){}
+static void win_draw_bar(win_t *win)
+{
+ (void) win;
+}
#endif /* HAVE_LIBFONTS */
void win_draw(win_t *win)