summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1996-07-27 20:28:55 +0000
committerRichard M. Stallman <rms@gnu.org>1996-07-27 20:28:55 +0000
commitc9646635bd06443a191dbf83e29b50e1f36899ff (patch)
tree1b0f078bad3cf48daba6f8ecebb1b00e06bcae9c
parenta9a3155621ee8f4db2fd3b5e6c228bc21d231abc (diff)
downloademacs-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.c15
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";