]> git.eshelyaron.com Git - emacs.git/commitdiff
(pending_menu_activation): New variable.
authorRichard M. Stallman <rms@gnu.org>
Sat, 27 Jul 1996 20:28:55 +0000 (20:28 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sat, 27 Jul 1996 20:28:55 +0000 (20:28 +0000)
(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.

src/xmenu.c

index bc9a9fb5b459fa2bb5ebb7313bbe9ede1588ca72..58a2b323279a52e49ef3acafa1025580b6ab075d 100644 (file)
@@ -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;
 \f
 #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";