]> code.delx.au - gnu-emacs/blobdiff - lwlib/xlwmenu.c
New file, from the Calc distribution (with Stephen Gildea's email address
[gnu-emacs] / lwlib / xlwmenu.c
index ccc8483c4eab6bf7872f5e94720c0d1aa812e84b..8c2d5c8b5f1d9e47490d6fd387acb2f5c5241776 100644 (file)
@@ -48,7 +48,7 @@ Boston, MA 02111-1307, USA.  */
 
 extern int gray_bitmap_width;
 extern int gray_bitmap_height;
-extern unsigned char *gray_bitmap_bits;
+extern char *gray_bitmap_bits;
 
 /* Defined in xterm.c.  */
 extern int x_alloc_nearest_color_for_widget __P ((Widget, Colormap, XColor*));
@@ -803,7 +803,7 @@ draw_separator (mw, window, x, y, width, type)
       xgcv.line_style = LineOnOffDash;
       XChangeGC (dpy, mw->menu.shadow_bottom_gc, GCLineStyle, &xgcv);
       XChangeGC (dpy, mw->menu.shadow_top_gc, GCLineStyle, &xgcv);
-      draw_separator (mw, window, x, y, SEPARATOR_SHADOW_ETCHED_IN);
+      draw_separator (mw, window, x, y, width, SEPARATOR_SHADOW_ETCHED_IN);
       xgcv.line_style = LineSolid;
       XChangeGC (dpy, mw->menu.shadow_bottom_gc, GCLineStyle, &xgcv);
       XChangeGC (dpy, mw->menu.shadow_top_gc, GCLineStyle, &xgcv);
@@ -813,7 +813,7 @@ draw_separator (mw, window, x, y, width, type)
       xgcv.line_style = LineOnOffDash;
       XChangeGC (dpy, mw->menu.shadow_bottom_gc, GCLineStyle, &xgcv);
       XChangeGC (dpy, mw->menu.shadow_top_gc, GCLineStyle, &xgcv);
-      draw_separator (mw, window, x, y, SEPARATOR_SHADOW_ETCHED_OUT);
+      draw_separator (mw, window, x, y, width, SEPARATOR_SHADOW_ETCHED_OUT);
       xgcv.line_style = LineSolid;
       XChangeGC (dpy, mw->menu.shadow_bottom_gc, GCLineStyle, &xgcv);
       XChangeGC (dpy, mw->menu.shadow_top_gc, GCLineStyle, &xgcv);
@@ -1195,6 +1195,23 @@ make_windows_if_needed (mw, n)
   }
 }
 
+/* Value is non-zero if WINDOW is part of menu bar widget W.  */
+
+int
+xlwmenu_window_p (w, window)
+     Widget w;
+     Window window;
+{
+  XlwMenuWidget mw = (XlwMenuWidget) w;
+  int i;
+  
+  for (i = 0; i < mw->menu.windows_length; ++i)
+    if (window == mw->menu.windows[i].window)
+      break;
+
+  return i < mw->menu.windows_length;
+}
+
 /* Make the window fit in the screen */
 static void
 fit_to_screen (mw, ws, previous_ws, horizontal_p)
@@ -1736,6 +1753,17 @@ XlwMenuRedisplay (w, ev, region)
     display_menu (mw, i, False, NULL, NULL, NULL, NULL, NULL);
 }
 
+
+/* Part of a hack to make the menu redisplay when a tooltip frame
+   over a menu item is unmapped.  */
+
+void
+xlwmenu_redisplay (w)
+     Widget w;
+{
+  XlwMenuRedisplay (w, NULL, None);
+}
+
 static void
 XlwMenuDestroy (w)
      Widget w;