changeset 12171:1d5d8a256d88

(update_menu_bar): Use set_buffer_internal_1 to switch bufs. Run the hooks in the proper buffer. Normally bind overriding-local-map to nil. (Qoverriding_local_map): New variable. (syms_of_xdisp): staticpro it.
author Karl Heuer <kwzh@gnu.org>
date Fri, 09 Jun 1995 16:00:45 +0000
parents 2bc3141d0d19
children 58ce63f11008
files src/xdisp.c
diffstat 1 files changed, 12 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/xdisp.c	Fri Jun 09 15:44:44 1995 +0000
+++ b/src/xdisp.c	Fri Jun 09 16:00:45 1995 +0000
@@ -45,6 +45,11 @@
 
 extern Lisp_Object Qface;
 
+extern Lisp_Object Voverriding_local_map;
+extern Lisp_Object Voverriding_local_map_menu_flag;
+
+Lisp_Object Qoverriding_local_map;
+
 /* Nonzero means print newline to stdout before next minibuffer message.  */
 
 int noninteractive_need_newline;
@@ -1259,8 +1264,11 @@
 	  struct buffer *prev = current_buffer;
 	  int count = specpdl_ptr - specpdl;
 
+	  set_buffer_internal_1 (XBUFFER (w->buffer));
 	  if (save_match_data)
 	    record_unwind_protect (Fstore_match_data, Fmatch_data ());
+	  if (NILP (Voverriding_local_map_menu_flag))
+	    specbind (Qoverriding_local_map, Qnil);
 
 	  /* Run the Lucid hook.  */
 	  call1 (Vrun_hooks, Qactivate_menubar_hook);
@@ -1269,14 +1277,13 @@
 	  if (! NILP (Vlucid_menu_bar_dirty_flag))
 	    call0 (Qrecompute_lucid_menubar);
 	  call1 (Vrun_hooks, Qmenu_bar_update_hook);
-	  current_buffer = XBUFFER (w->buffer);
 	  FRAME_MENU_BAR_ITEMS (f) = menu_bar_items (FRAME_MENU_BAR_ITEMS (f));
 #ifdef USE_X_TOOLKIT
 	  set_frame_menubar (f, 0);
 #endif /* USE_X_TOOLKIT */
 
-	  current_buffer = prev;
 	  unbind_to (count, Qnil);
+	  set_buffer_internal_1 (prev);
 	}
     }
 }
@@ -4050,6 +4057,9 @@
   staticpro (&Qmenu_bar_update_hook);
   Qmenu_bar_update_hook = intern ("menu-bar-update-hook");
 
+  staticpro (&Qoverriding_local_map);
+  Qoverriding_local_map = intern ("overriding-local-map");
+
   staticpro (&last_arrow_position);
   staticpro (&last_arrow_string);
   last_arrow_position = Qnil;