]> git.eshelyaron.com Git - emacs.git/commitdiff
(pending_menu_activation): Don't initialize. Not static.
authorRichard M. Stallman <rms@gnu.org>
Wed, 31 Jul 1996 16:54:23 +0000 (16:54 +0000)
committerRichard M. Stallman <rms@gnu.org>
Wed, 31 Jul 1996 16:54:23 +0000 (16:54 +0000)
(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.

src/xmenu.c

index 2cb381a0fa8a2f4b392c864e4cc1ed3c41e1f25d..d043ca2dfd3120f3c5425c28268435b51a3a9d86 100644 (file)
@@ -172,7 +172,14 @@ static int popup_activated_flag;
 
 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;
 \f
 #ifdef USE_X_TOOLKIT
 
@@ -1007,6 +1014,8 @@ on the left of the dialog box and all following items on the right.\n\
     }
   else if (WINDOWP (position) || FRAMEP (position))
     window = position;
+  else
+    window = Qnil;
 
   /* Decode where to put the menu.  */
 
@@ -1184,13 +1193,14 @@ x_activate_menubar (f)
   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 @@ set_frame_menubar (f, first_time, deep_p)
   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 ();