changeset 7040:cd4dd38925f9

(x_window): Test FRAME_EXTERNAL_MENU_BAR to decide on calling initialize_frame_menubar. (x_top_window_to_frame): New function.
author Richard M. Stallman <rms@gnu.org>
date Sat, 23 Apr 1994 04:09:17 +0000
parents 403172c099fc
children 7b8c405c910a
files src/xfns.c
diffstat 1 files changed, 34 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/xfns.c	Sat Apr 23 04:07:29 1994 +0000
+++ b/src/xfns.c	Sat Apr 23 04:09:17 1994 +0000
@@ -315,6 +315,38 @@
     }
   return 0;
 }
+
+/* Return the frame whose principal (outermost) window is WDESC.
+   If WDESC is some other (smaller) window, we return 0.  */
+
+struct frame *
+x_top_window_to_frame (wdesc)
+     int wdesc;
+{
+  Lisp_Object tail, frame;
+  struct frame *f;
+  struct x_display *x;
+
+  for (tail = Vframe_list; XGCTYPE (tail) == Lisp_Cons;
+       tail = XCONS (tail)->cdr)
+    {
+      frame = XCONS (tail)->car;
+      if (XGCTYPE (frame) != Lisp_Frame)
+        continue;
+      f = XFRAME (frame);
+      if (f->display.nothing == 1) 
+	return 0;
+      x = f->display.x;
+      /* This frame matches if the window is its topmost widget.  */
+      if (wdesc == XtWindow (x->widget))
+	return f;
+      /* Match if the window is this frame's menubar.  */
+      if (x->menubar_widget 
+	  && wdesc == XtWindow (x->menubar_widget))
+	return f;
+    }
+  return 0;
+}
 #endif /* USE_X_TOOLKIT */
 
 
@@ -1768,12 +1800,11 @@
 
   f->display.x->column_widget = pane_widget;
 
-  if (!minibuffer_only && FRAME_MENU_BAR_LINES (f) > 0)
+  if (!minibuffer_only && FRAME_EXTERNAL_MENU_BAR (f))
     initialize_frame_menubar (f);
 
   /* mappedWhenManaged to false tells to the paned window to not map/unmap 
-   * the emacs screen when changing menubar.  This reduces flickering a lot.
-   */
+     the emacs screen when changing menubar.  This reduces flickering.  */
 
   ac = 0;
   XtSetArg (al[ac], XtNmappedWhenManaged, 0); ac++;