diff options
author | Richard M. Stallman <rms@gnu.org> | 1996-07-27 20:28:55 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1996-07-27 20:28:55 +0000 |
commit | c9646635bd06443a191dbf83e29b50e1f36899ff (patch) | |
tree | 1b0f078bad3cf48daba6f8ecebb1b00e06bcae9c | |
parent | a9a3155621ee8f4db2fd3b5e6c228bc21d231abc (diff) | |
download | emacs-c9646635bd06443a191dbf83e29b50e1f36899ff.tar.gz |
(pending_menu_activation): New variable.
(x_activate_menubar): Don't call set_frame_menubar for
ButtonRelease events. Instead, set pending_menu_activation.
(set_frame_menubar): If pending_menu_activation, set deep_p.
-rw-r--r-- | src/xmenu.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/xmenu.c b/src/xmenu.c index bc9a9fb5b45..58a2b323279 100644 --- a/src/xmenu.c +++ b/src/xmenu.c @@ -171,6 +171,8 @@ static int menu_items_submenu_depth; static int popup_activated_flag; static int next_menubar_widget_id; + +static int pending_menu_activation = 1; #ifdef USE_X_TOOLKIT @@ -1182,12 +1184,14 @@ x_activate_menubar (f) if (!f->output_data.x->saved_menu_event->type) return; - set_frame_menubar (f, 0, 1); - + if (f->output_data.x->saved_menu_event->type != ButtonRelease) + set_frame_menubar (f, 0, 1); BLOCK_INPUT; XtDispatchEvent ((XEvent *) f->output_data.x->saved_menu_event); UNBLOCK_INPUT; - + if (f->output_data.x->saved_menu_event->type == ButtonRelease) + pending_menu_activation = 1; + /* Ignore this if we get it a second time. */ f->output_data.x->saved_menu_event->type = 0; } @@ -1602,6 +1606,11 @@ set_frame_menubar (f, first_time, deep_p) if (! menubar_widget) deep_p = 1; + else if (pending_menu_activation && !deep_p) + { + deep_p = 1; + pending_menu_activation = 0; + } wv = xmalloc_widget_value (); wv->name = "menubar"; |