Mercurial > emacs
changeset 15807:508ec69917b1
(pending_menu_activation): Don't initialize. Not static.
(set_frame_menubar): If no saved_menu_event yet, set deep_p.
Don't clear pending_menu_activation here.
(Fx_popup_dialog): Don't fail to initialize WINDOW.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Wed, 31 Jul 1996 16:54:23 +0000 |
parents | a3f1489198ea |
children | 3afa38a18102 |
files | src/xmenu.c |
diffstat | 1 files changed, 18 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xmenu.c Wed Jul 31 16:52:52 1996 +0000 +++ b/src/xmenu.c Wed Jul 31 16:54:23 1996 +0000 @@ -172,7 +172,14 @@ static int next_menubar_widget_id; -static int pending_menu_activation = 1; +/* This is set nonzero after the user activates the menu bar, and set + to zero again after the menu bars are redisplayed by prepare_menu_bar. + While it is nonzero, all calls to set_frame_menubar go deep. + + I don't understand why this is needed, but it does seem to be + needed on Motif, according to Marcus Daniels <marcus@sysc.pdx.edu>. */ + +int pending_menu_activation; #ifdef USE_X_TOOLKIT @@ -1007,6 +1014,8 @@ } else if (WINDOWP (position) || FRAMEP (position)) window = position; + else + window = Qnil; /* Decode where to put the menu. */ @@ -1184,13 +1193,14 @@ if (!f->output_data.x->saved_menu_event->type) return; - if (f->output_data.x->saved_menu_event->type != ButtonRelease) - set_frame_menubar (f, 0, 1); + set_frame_menubar (f, 0, 1); BLOCK_INPUT; XtDispatchEvent ((XEvent *) f->output_data.x->saved_menu_event); UNBLOCK_INPUT; +#ifdef USE_MOTIF if (f->output_data.x->saved_menu_event->type == ButtonRelease) pending_menu_activation = 1; +#endif /* Ignore this if we get it a second time. */ f->output_data.x->saved_menu_event->type = 0; @@ -1607,9 +1617,13 @@ if (! menubar_widget) deep_p = 1; else if (pending_menu_activation && !deep_p) + deep_p = 1; + /* Make the first call for any given frame always go deep. */ + else if (!f->output_data.x->saved_menu_event && !deep_p) { deep_p = 1; - pending_menu_activation = 0; + f->output_data.x->saved_menu_event = (XEvent*)xmalloc (sizeof (XEvent)); + f->output_data.x->saved_menu_event->type = 0; } wv = xmalloc_widget_value ();