Mercurial > hg > xemacs-beta
diff src/menubar-x.c @ 82:6a378aca36af r20-0b91
Import from CVS: tag r20-0b91
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:07:36 +0200 |
parents | 131b0175ea99 |
children | a145efe76779 |
line wrap: on
line diff
--- a/src/menubar-x.c Mon Aug 13 09:06:45 2007 +0200 +++ b/src/menubar-x.c Mon Aug 13 09:07:36 2007 +0200 @@ -336,6 +336,7 @@ struct device *d = get_device_from_display (XtDisplay (widget)); struct frame *f = x_any_window_to_frame (d, XtWindow (widget)); Lisp_Object rest = Qnil; + Lisp_Object frame; int any_changes = 0; if (!f) @@ -343,6 +344,10 @@ if (!f) return; + /* make sure f is the selected frame */ + XSETFRAME (frame, f); + Fselect_frame (frame); + if (client_data) { /* this is an incremental menu construction callback */ @@ -433,12 +438,20 @@ data = 0; else { + Lisp_Object old_buffer; + int count = specpdl_depth (); + + old_buffer = Fcurrent_buffer (); + record_unwind_protect (Fset_buffer, old_buffer); + Fset_buffer ( XWINDOW (FRAME_SELECTED_WINDOW (f))->buffer); data = menu_item_descriptor_to_widget_value (menubar, MENUBAR_TYPE, deep_p, 0); #ifdef ENERGIZE if (data) set_panel_button_sensitivity (f, data); #endif + Fset_buffer (old_buffer); + unbind_to (count, Qnil); } return data; }