#include "lwlib-utils.h"
#include <X11/StringDefs.h>
+#ifdef __osf__
+#include <string.h>
+#include <stdlib.h>
+extern long *xmalloc();
+#endif
+
#if defined (USE_LUCID)
#include "lwlib-Xlw.h"
#endif
ERROR! no more than one of USE_MOTIF and USE_OLIT may be defined.
#endif
+#ifndef max
+#define max(x, y) ((x) > (y) ? (x) : (y))
+#endif
+
/* List of all widgets managed by the library. */
static widget_info*
all_widget_info = NULL;
+#ifdef USE_MOTIF
+char *lwlib_toolkit_type = "motif";
+#else
+char *lwlib_toolkit_type = "lucid";
+#endif
\f/* Forward declarations */
static void
instanciate_widget_instance (/* widget_instance* instance */);
return (s1 && s2) ? strcmp (s1, s2) : s1 ? False : !!s2;
}
-static int
-max (i1, i2)
- int i1;
- int i2;
-{
- return i1 > i2 ? i1 : i2;
-}
-
#if 0
# define EXPLAIN(name, oc, nc, desc, a1, a2) \
}
#ifdef USE_MOTIF
-extern Widget first_child (Widget); /* garbage */
+extern Widget first_child (/* Widget */); /* garbage */
#endif
Widget
}
void
-lw_popup_menu (widget)
+lw_popup_menu (widget, event)
Widget widget;
+ XEvent *event;
{
#if defined (USE_LUCID)
if (lw_lucid_widget_p (widget))
- xlw_popup_menu (widget);
+ xlw_popup_menu (widget, event);
#endif
#if defined (USE_MOTIF)
if (lw_motif_widget_p (widget))
- xm_popup_menu (widget);
+ xm_popup_menu (widget, event);
#endif
#if defined (USE_OLIT)
if (lw_olit_widget_p (widget))
- xol_popup_menu (widget);
+ xol_popup_menu (widget, event);
#endif
#if defined (USE_XAW)
if (lw_xaw_widget_p (widget))
- xaw_popup_menu (widget);
+ xaw_popup_menu (widget, event);
#endif
}
}
}
}
+
+/* This hack exists because Lucid/Athena need to execute the strange
+ function below to support geometry management. */
+void
+lw_refigure_widget (w, doit)
+ Widget w;
+ Boolean doit;
+{
+#if defined (USE_XAW)
+ XawPanedSetRefigureMode (w, doit);
+#endif
+#if defined (USE_MOTIF)
+ if (doit)
+ XtManageChild (w);
+ else
+ XtUnmanageChild (w);
+#endif
+}
+
+/* Toolkit independent way of determining if an event window is in the
+ menubar. */
+Boolean
+lw_window_is_in_menubar (win, menubar_widget)
+ Window win;
+ Widget menubar_widget;
+{
+ return menubar_widget
+#if defined (USE_LUCID)
+ && XtWindow (menubar_widget) == win;
+#endif
+#if defined (USE_MOTIF)
+ && XtWindowToWidget (XtDisplay (menubar_widget), win)
+ && (XtParent (XtWindowToWidget (XtDisplay (menubar_widget), win))
+ == menubar_widget);
+#endif
+}
+
+/* Motif hack to set the main window areas. */
+void
+lw_set_main_areas (parent, menubar, work_area)
+ Widget parent;
+ Widget menubar;
+ Widget work_area;
+{
+#if defined (USE_MOTIF)
+ xm_set_main_areas (parent, menubar, work_area);
+#endif
+}
+
+/* Manage resizing for Motif. This disables resizing when the menubar
+ is about to be modified. */
+void
+lw_allow_resizing (w, flag)
+ Widget w;
+ Boolean flag;
+{
+#if defined (USE_MOTIF)
+ xm_manage_resizing (w, flag);
+#endif
+}