diff options
author | Bert Münnich <ber.t@posteo.de> | 2014-07-23 23:41:23 +0200 |
---|---|---|
committer | Bert Münnich <ber.t@posteo.de> | 2014-07-23 23:41:23 +0200 |
commit | 9c92de858484b6bbe90252955bef5f77a80f3c45 (patch) | |
tree | 6cc5e92a83f29e3082848e41ee8bd981e80f3b3f /main.c | |
parent | 06164c29b759c3e21e79be03b285bdf3da6f5a25 (diff) |
Added support for multiple commands per key/button mapping; elegant fix for issue #150
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 12 |
1 files changed, 8 insertions, 4 deletions
@@ -541,6 +541,7 @@ void on_keypress(XKeyEvent *kev) unsigned int sh; KeySym ksym, shksym; char key; + bool dirty = false; if (kev == NULL) return; @@ -571,16 +572,18 @@ void on_keypress(XKeyEvent *kev) (cmds[keys[i].cmd].mode < 0 || cmds[keys[i].cmd].mode == mode)) { if (cmds[keys[i].cmd].func(keys[i].arg)) - redraw(); - break; + dirty = true; } } + if (dirty) + redraw(); prefix = 0; } void on_buttonpress(XButtonEvent *bev) { int i, sel; + bool dirty = false; static Time firstclick; if (bev == NULL) @@ -597,10 +600,11 @@ void on_buttonpress(XButtonEvent *bev) (cmds[buttons[i].cmd].mode < 0 || cmds[buttons[i].cmd].mode == mode)) { if (cmds[buttons[i].cmd].func(buttons[i].arg)) - redraw(); - break; + dirty = true; } } + if (dirty) + redraw(); } else { /* thumbnail mode (hard-coded) */ switch (bev->button) { |