commit 9cbe6a640c7cc0cd9c2c029083c942aff980b0a3
parent c918c6563b24ebbd47aae5fb12eb2d25735b33c5
Author: Benno Schulenberg <bensberg@justemail.net>
Date: Thu, 5 May 2016 22:12:24 +0200
search: when polling the keyboard, consume all waiting keystrokes
When during searching we look at the keyboard, then don't look at
just the first keystroke, but check if there are more, and if so,
check each one until we find a Cancel -- or until all keystrokes
have been consumed and we can continue.
This fixes the first half of https://savannah.gnu.org/bugs/?47438.
Diffstat:
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/src/search.c b/src/search.c
@@ -292,10 +292,14 @@ int findnextstr(
lastkbcheck = time(NULL);
- if (input && func_from_key(&input) == do_cancel) {
- statusbar(_("Cancelled"));
- disable_nodelay();
- return -2;
+ /* Consume all waiting keystrokes until a Cancel. */
+ while (input) {
+ if (func_from_key(&input) == do_cancel) {
+ statusbar(_("Cancelled"));
+ disable_nodelay();
+ return -2;
+ }
+ input = parse_kbinput(NULL);
}
if (++feedback > 0)