From: Stefan Monnier Date: Sat, 24 May 2003 14:52:10 +0000 (+0000) Subject: (read_key_sequence): Adjust fkey and keytran when dropping `down' events. X-Git-Tag: ttn-vms-21-2-B4~9999 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=017be6c78048b28ef091095843904daaa18ec63e;p=emacs.git (read_key_sequence): Adjust fkey and keytran when dropping `down' events. --- diff --git a/src/keyboard.c b/src/keyboard.c index dd8b751c8d5..c8780867bb0 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -9138,6 +9138,27 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last, xterm-mouse-mode. -stef Isn't this just the most wonderful code ever? */ + + /* If mock_input > t + 1, the above simplification + will actually end up dropping keys on the floor. + This is probably OK for now, but even + if mock_input <= t + 1, we need to adjust fkey + and keytran. + Typical case [header-line down-mouse-N]: + mock_input = 2, t = 1, fkey.end = 1, + last_real_key_start = 0. */ + if (fkey.end > last_real_key_start) + { + fkey.end = fkey.start + = min (last_real_key_start, fkey.start); + fkey.map = fkey.parent; + if (keytran.end > last_real_key_start) + { + keytran.end = keytran.start + = min (last_real_key_start, keytran.start); + keytran.map = keytran.parent; + } + } if (t == last_real_key_start) { mock_input = 0;