]> code.delx.au - gnu-emacs/blobdiff - lwlib/lwlib.c
Add #undef for index and rindex.
[gnu-emacs] / lwlib / lwlib.c
index 57edebcd085f5ab443c0cd5e46f84319116d4ed7..5dd4f1d8133af9864b5a6fd36b24fcda2db91887 100644 (file)
@@ -28,6 +28,12 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #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
@@ -53,10 +59,19 @@ ERROR!  At least one of USE_LUCID, USE_MOTIF or USE_OLIT must be defined.
 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 */);
@@ -397,14 +412,6 @@ safe_strcmp (s1, s2)
   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)                           \
@@ -988,7 +995,7 @@ lw_destroy_all_pop_ups ()
 }
 
 #ifdef USE_MOTIF
-extern Widget first_child (Widget);    /* garbage */
+extern Widget first_child (/* Widget */);      /* garbage */
 #endif
 
 Widget
@@ -1083,24 +1090,25 @@ lw_pop_down_all_widgets (id)
 }
 
 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
 }
 
@@ -1299,3 +1307,63 @@ lw_show_busy (w, busy)
        }
     }
 }
+
+/* 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
+}