diff options
| author | N-R-K <79544946+N-R-K@users.noreply.github.com> | 2021-12-01 05:41:22 +0600 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-01 05:41:22 +0600 | 
| commit | 3bc7082f4e08e71fb40944bb085fafbb65f6c8cf (patch) | |
| tree | a47b2421ab25c4a28257252f6bb9fecfc3797adc | |
| parent | 68ddbe28d87eed9efe5158cdaa5613e0ca66e3c5 (diff) | |
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.c | 2 | ||||
| -rw-r--r-- | main.c | 10 | ||||
| -rw-r--r-- | window.c | 5 | 
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;  } @@ -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 { @@ -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) | 
