diff options
| author | Martin Rudalics | 2009-01-12 09:21:15 +0000 |
|---|---|---|
| committer | Martin Rudalics | 2009-01-12 09:21:15 +0000 |
| commit | a41240a3ab0bd501fe97761fc019b5f689cbc348 (patch) | |
| tree | 0038bbe96c2ed538de9f7b59bd70066667accac8 /src | |
| parent | 6bbd9b3200253de8434b18a0ec50013952be0dbc (diff) | |
| download | emacs-a41240a3ab0bd501fe97761fc019b5f689cbc348.tar.gz emacs-a41240a3ab0bd501fe97761fc019b5f689cbc348.zip | |
(read_char): Fix case where last_nonmenu_event
returned a bad value with submenus. (Bug#447)
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 5 | ||||
| -rw-r--r-- | src/keyboard.c | 11 |
2 files changed, 14 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 1de7e5984c8..6bb7107a206 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2009-01-12 Martin Rudalics <rudalics@gmx.at> | ||
| 2 | |||
| 3 | * keyboard.c (read_char): Fix case where last_nonmenu_event | ||
| 4 | returned a bad value with submenus. (Bug#447) | ||
| 5 | |||
| 1 | 2009-01-12 Chong Yidong <cyd@stupidchicken.com> | 6 | 2009-01-12 Chong Yidong <cyd@stupidchicken.com> |
| 2 | 7 | ||
| 3 | * xfaces.c (Finternal_set_lisp_face_attribute): If setting the | 8 | * xfaces.c (Finternal_set_lisp_face_attribute): If setting the |
diff --git a/src/keyboard.c b/src/keyboard.c index 00c8a2af67a..a6be5b152db 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -2547,6 +2547,8 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time) | |||
| 2547 | 2547 | ||
| 2548 | if (CONSP (Vunread_command_events)) | 2548 | if (CONSP (Vunread_command_events)) |
| 2549 | { | 2549 | { |
| 2550 | int was_disabled = 0; | ||
| 2551 | |||
| 2550 | c = XCAR (Vunread_command_events); | 2552 | c = XCAR (Vunread_command_events); |
| 2551 | Vunread_command_events = XCDR (Vunread_command_events); | 2553 | Vunread_command_events = XCDR (Vunread_command_events); |
| 2552 | 2554 | ||
| @@ -2567,12 +2569,17 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time) | |||
| 2567 | if (CONSP (c) | 2569 | if (CONSP (c) |
| 2568 | && EQ (XCDR (c), Qdisabled) | 2570 | && EQ (XCDR (c), Qdisabled) |
| 2569 | && (SYMBOLP (XCAR (c)) || INTEGERP (XCAR (c)))) | 2571 | && (SYMBOLP (XCAR (c)) || INTEGERP (XCAR (c)))) |
| 2570 | c = XCAR (c); | 2572 | { |
| 2573 | was_disabled = 1; | ||
| 2574 | c = XCAR (c); | ||
| 2575 | } | ||
| 2571 | 2576 | ||
| 2572 | /* If the queued event is something that used the mouse, | 2577 | /* If the queued event is something that used the mouse, |
| 2573 | set used_mouse_menu accordingly. */ | 2578 | set used_mouse_menu accordingly. */ |
| 2574 | if (used_mouse_menu | 2579 | if (used_mouse_menu |
| 2575 | && (EQ (c, Qtool_bar) || EQ (c, Qmenu_bar))) | 2580 | /* Also check was_disabled so last-nonmenu-event won't return |
| 2581 | a bad value when submenus are involved. (Bug#447) */ | ||
| 2582 | && (EQ (c, Qtool_bar) || EQ (c, Qmenu_bar) || was_disabled)) | ||
| 2576 | *used_mouse_menu = 1; | 2583 | *used_mouse_menu = 1; |
| 2577 | 2584 | ||
| 2578 | goto reread_for_input_method; | 2585 | goto reread_for_input_method; |