# HG changeset patch # User Richard M. Stallman # Date 806949361 0 # Node ID 33dc35e15fd25f96ffff91e24421be7758f0870f # Parent a8feaa42d77542829493df7ed23352a482e3ddbe (kbd_buffer_get_event): Update input_pending after discarding one event from the queue, if we process the event here. (swallow_events): Likewise. (Vkey_translation_map): Just declare, don't define. (syms_of_keyboard): Don't set up Lisp var. diff -r a8feaa42d775 -r 33dc35e15fd2 src/keyboard.c --- a/src/keyboard.c Fri Jul 28 08:16:47 1995 +0000 +++ b/src/keyboard.c Fri Jul 28 16:36:01 1995 +0000 @@ -310,8 +310,9 @@ /* Keymap mapping ASCII function key sequences onto their preferred forms. */ extern Lisp_Object Vfunction_key_map; -/* Keymap mapping ASCII function key sequences onto their preferred forms. */ -Lisp_Object Vkey_translation_map; +/* Another keymap that maps key sequences into key sequences. + This one takes precedence over ordinary definitions. */ +extern Lisp_Object Vkey_translation_map; /* Non-nil means deactivate the mark at end of this command. */ Lisp_Object Vdeactivate_mark; @@ -2563,6 +2564,7 @@ and process it again. */ copy = *event; kbd_fetch_ptr = event + 1; + input_pending = readable_events (); x_handle_selection_request (©); #else /* We're getting selection request events, but we don't have @@ -2574,7 +2576,12 @@ else if (event->kind == selection_clear_event) { #ifdef HAVE_X11 + struct input_event copy; + + /* Remove it from the buffer before processing it. */ + copy = *event; kbd_fetch_ptr = event + 1; + input_pending = readable_events (); x_handle_selection_clear (event); #else /* We're getting selection request events, but we don't have @@ -2615,6 +2622,7 @@ else if (event->kind == menu_bar_activate_event) { kbd_fetch_ptr = event + 1; + input_pending = readable_events (); x_activate_menubar (XFRAME (event->frame_or_window)); } #endif @@ -2757,8 +2765,13 @@ { #ifdef HAVE_X11 struct input_event copy; + + /* Remove it from the buffer before processing it, + since otherwise swallow_events called recursively could see it + and process it again. */ copy = *event; kbd_fetch_ptr = event + 1; + input_pending = readable_events (); x_handle_selection_request (©); #else /* We're getting selection request events, but we don't have @@ -2770,8 +2783,14 @@ else if (event->kind == selection_clear_event) { #ifdef HAVE_X11 + struct input_event copy; + + /* Remove it from the buffer before processing it, */ + copy = *event; + + kbd_fetch_ptr = event + 1; + input_pending = readable_events (); x_handle_selection_clear (event); - kbd_fetch_ptr = event + 1; #else /* We're getting selection request events, but we don't have a window system. */ @@ -7163,12 +7182,6 @@ If string is of length N, character codes N and up are untranslated."); Vkeyboard_translate_table = Qnil; - DEFVAR_LISP ("key-translation-map", &Vkey_translation_map, - "Keymap of key translations that can override keymaps.\n\ -This keymap works like `function-key-map', but comes after that,\n\ -and applies even for keys that have ordinary bindings."); - Vkey_translation_map = Qnil; - DEFVAR_BOOL ("cannot-suspend", &cannot_suspend, "Non-nil means to always spawn a subshell instead of suspending,\n\ even if the operating system has support for stopping a process.");