summaryrefslogtreecommitdiff
path: root/src/gui/curses/gui-curses-key.c
diff options
context:
space:
mode:
authorTrygve Aaberge <trygveaa@gmail.com>2023-07-03 21:59:23 +0200
committerSébastien Helleu <flashcode@flashtux.org>2023-07-03 23:02:23 +0200
commit3247974eb447b5fe2bc4df19464b2f15282f30cd (patch)
treed607548b22ce13aa59a8b5a46ba6cc5f3dbef67c /src/gui/curses/gui-curses-key.c
parent824cfb64277213aca89dfba5f0b474f94f6dd482 (diff)
downloadweechat-3247974eb447b5fe2bc4df19464b2f15282f30cd.zip
core: don't send key_pressed signal again for the same key press
If you press an incomplete key sequence, previously WeeChat would send the key_pressed signal again for the same keys on the next key. E.g. if you press escape and then 1, previously you would get the key_pressed signal with signal_data `\x01[` when you pressed escape, and then key_pressed with `\x01[` again when you pressed 1 (plus key_pressed with `1` for the 1 key). So two signals for the escape key, even though it was only pressed once. With this patch, you only get one signal for each key press. So one with `\x01[` when you press escape and then one with `1` when you press 1.
Diffstat (limited to 'src/gui/curses/gui-curses-key.c')
-rw-r--r--src/gui/curses/gui-curses-key.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/gui/curses/gui-curses-key.c b/src/gui/curses/gui-curses-key.c
index eeedbb27b..8eea1bb7f 100644
--- a/src/gui/curses/gui-curses-key.c
+++ b/src/gui/curses/gui-curses-key.c
@@ -396,12 +396,13 @@ gui_key_flush (int paste)
* or if the mouse code is valid UTF-8 (do not send partial mouse
* code which is not UTF-8 valid)
*/
- if (!paste
+ if (!paste && i > gui_key_last_key_pressed_sent
&& (!gui_mouse_event_pending
|| utf8_is_valid (key_str, -1, NULL)))
{
(void) hook_signal_send ("key_pressed",
WEECHAT_HOOK_SIGNAL_STRING, key_str);
+ gui_key_last_key_pressed_sent = i;
}
if (gui_current_window->buffer->text_search != GUI_TEXT_SEARCH_DISABLED)