]> git.eshelyaron.com Git - emacs.git/commitdiff
(read_char): Fix case where last_nonmenu_event
authorMartin Rudalics <rudalics@gmx.at>
Mon, 12 Jan 2009 09:21:15 +0000 (09:21 +0000)
committerMartin Rudalics <rudalics@gmx.at>
Mon, 12 Jan 2009 09:21:15 +0000 (09:21 +0000)
returned a bad value with submenus.  (Bug#447)

src/ChangeLog
src/keyboard.c

index 1de7e5984c8846e0d430e7ab201f05b78ce4cb57..6bb7107a206ffbb4ff25b084fdd15ce01e48529f 100644 (file)
@@ -1,3 +1,8 @@
+2009-01-12  Martin Rudalics  <rudalics@gmx.at>
+
+       * keyboard.c (read_char): Fix case where last_nonmenu_event
+       returned a bad value with submenus.  (Bug#447)
+
 2009-01-12  Chong Yidong  <cyd@stupidchicken.com>
 
        * xfaces.c (Finternal_set_lisp_face_attribute): If setting the
index 00c8a2af67a9a04f34c35d46c01ad9539fb4af32..a6be5b152db1c773d419100ec0d5399a2c6ce5af 100644 (file)
@@ -2547,6 +2547,8 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
 
   if (CONSP (Vunread_command_events))
     {
+      int was_disabled = 0;
+
       c = XCAR (Vunread_command_events);
       Vunread_command_events = XCDR (Vunread_command_events);
 
@@ -2567,12 +2569,17 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
       if (CONSP (c)
          && EQ (XCDR (c), Qdisabled)
          && (SYMBOLP (XCAR (c)) || INTEGERP (XCAR (c))))
-       c = XCAR (c);
+       {
+         was_disabled = 1;
+         c = XCAR (c);
+       }
 
       /* If the queued event is something that used the mouse,
          set used_mouse_menu accordingly.  */
       if (used_mouse_menu
-         && (EQ (c, Qtool_bar) || EQ (c, Qmenu_bar)))
+         /* Also check was_disabled so last-nonmenu-event won't return
+            a bad value when submenus are involved.  (Bug#447)  */
+         && (EQ (c, Qtool_bar) || EQ (c, Qmenu_bar) || was_disabled))
        *used_mouse_menu = 1;
 
       goto reread_for_input_method;