# HG changeset patch # User Karl Heuer # Date 802713645 0 # Node ID 1d5d8a256d88a3148d79762ef48b669ed671d51c # Parent 2bc3141d0d19c4bc9ac2b2cab4f1033602137992 (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. diff -r 2bc3141d0d19 -r 1d5d8a256d88 src/xdisp.c --- 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;