changeset 51179:52ab727d168b

(read_key_sequence): Adjust fkey and keytran when dropping `down' events.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sat, 24 May 2003 14:52:10 +0000
parents 4f760005cf14
children 8444fb4d51cf
files src/keyboard.c
diffstat 1 files changed, 21 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/keyboard.c	Sat May 24 14:10:53 2003 +0000
+++ b/src/keyboard.c	Sat May 24 14:52:10 2003 +0000
@@ -9138,6 +9138,27 @@
 			     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;