Mercurial > emacs
changeset 2719:340d7c6c8790
* keyboard.c (read_char): Exit kbd macro if Vexecuting_macro is t.
* keyboard.c (do_mouse_tracking): Now static.
* keyboard.c (read_char_menu_prompt): Expect Fx_popup_menu
to return a list of events. Don't lose any of them.
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Mon, 10 May 1993 00:10:08 +0000 |
parents | c91b18333f58 |
children | ad53bd625e1c |
files | src/keyboard.c |
diffstat | 1 files changed, 17 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/keyboard.c Sun May 09 23:54:12 1993 +0000 +++ b/src/keyboard.c Mon May 10 00:10:08 1993 +0000 @@ -332,10 +332,10 @@ dequeuing functions? Such a flag could be screwed up by interrupts at inopportune times. */ -/* If this flag is non-zero, we will check mouse_moved to see when the +/* If this flag is non-zero, we check mouse_moved to see when the mouse moves, and motion events will appear in the input stream. If - it is zero, mouse motion will be ignored. */ -int do_mouse_tracking; + it is zero, mouse motion is ignored. */ +static int do_mouse_tracking; /* The window system handling code should set this if the mouse has moved since the last call to the mouse_position_hook. Calling that @@ -1299,7 +1299,11 @@ Vlast_event_frame = internal_last_event_frame = Qmacro; #endif - if (executing_macro_index >= XFASTINT (Flength (Vexecuting_macro))) + /* Exit the macro if we are at the end. + Also, some things replace the macro with t + to force an early exit. */ + if (EQ (Vexecuting_macro, Qt) + || executing_macro_index >= XFASTINT (Flength (Vexecuting_macro))) { XSET (c, Lisp_Int, -1); return c; @@ -3154,6 +3158,15 @@ realmaps[nmaps1++] = maps[mapno]; value = Fx_popup_menu (prev_event, Flist (nmaps1, realmaps)); + if (CONSP (value)) + { + /* If we got more than one event, put all but the first + onto this list to be read later. + Return just the first event now. */ + unread_command_events + = nconc2 (XCONS (value)->cdr, unread_command_events); + value = XCONS (value)->car; + } if (NILP (value)) XSET (value, Lisp_Int, quit_char); if (used_mouse_menu)