--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/lib/libXaw4/sun-src/Xaw3_1Sme.c Wed Jul 15 16:27:02 2009 -0700
@@ -0,0 +1,238 @@
+#if ( !defined(lint) && !defined(SABER) )
+static char Xrcsid[] = "$XConsortium: Sme.c,v 1.6 89/12/11 15:20:07 kit Exp $";
+#endif
+
+/*
+ * Copyright 1989 Massachusetts Institute of Technology
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of M.I.T. not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. M.I.T. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T.
+ * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * Sme.c - Source code for the generic menu entry
+ *
+ * Date: September 26, 1989
+ *
+ * By: Chris D. Peterson
+ * MIT X Consortium
+ * [email protected]
+ */
+
+#include <stdio.h>
+#include <X11/IntrinsicP.h>
+#include <X11/StringDefs.h>
+
+#include <./Xaw3_1XawInit.h>
+#include <./Xaw3_1SmeP.h>
+#include <./Xaw3_1Cardinals.h>
+
+#define offset(field) XtOffset(SmeObject, sme.field)
+static XtResource resources[] = {
+ {XtNcallback, XtCCallback, XtRCallback, sizeof(caddr_t),
+ offset(callbacks), XtRCallback, (caddr_t)NULL},
+};
+#undef offset
+
+/*
+ * Semi Public function definitions.
+ */
+
+static void Unhighlight(), Highlight(), Notify(), ClassPartInitialize();
+static void Initialize();
+static XtGeometryResult QueryGeometry();
+
+#define SUPERCLASS (&rectObjClassRec)
+
+SmeClassRec smeClassRec = {
+ {
+ /* superclass */ (WidgetClass) SUPERCLASS,
+ /* class_name */ "Sme",
+ /* size */ sizeof(SmeRec),
+ /* class_initialize */ XawInitializeWidgetSet,
+ /* class_part_initialize*/ ClassPartInitialize,
+ /* Class init'ed */ FALSE,
+ /* initialize */ Initialize,
+ /* initialize_hook */ NULL,
+ /* realize */ NULL,
+ /* actions */ NULL,
+ /* num_actions */ ZERO,
+ /* resources */ resources,
+ /* resource_count */ XtNumber(resources),
+ /* xrm_class */ NULLQUARK,
+ /* compress_motion */ FALSE,
+ /* compress_exposure */ FALSE,
+ /* compress_enterleave*/ FALSE,
+ /* visible_interest */ FALSE,
+ /* destroy */ NULL,
+ /* resize */ NULL,
+ /* expose */ NULL,
+ /* set_values */ NULL,
+ /* set_values_hook */ NULL,
+ /* set_values_almost */ XtInheritSetValuesAlmost,
+ /* get_values_hook */ NULL,
+ /* accept_focus */ NULL,
+ /* intrinsics version */ XtVersion,
+ /* callback offsets */ NULL,
+ /* tm_table */ NULL,
+ /* query_geometry */ QueryGeometry,
+ /* display_accelerator*/ NULL,
+ /* extension */ NULL
+ },{
+ /* Simple Menu Entry Fields */
+
+ /* highlight */ Highlight,
+ /* unhighlight */ Unhighlight,
+ /* notify */ Notify,
+ /* extension */ NULL
+ }
+};
+
+WidgetClass smeObjectClass = (WidgetClass) &smeClassRec;
+
+/************************************************************
+ *
+ * Semi-Public Functions.
+ *
+ ************************************************************/
+
+/* Function Name: ClassPartInitialize
+ * Description: handles inheritance of class functions.
+ * Arguments: class - the widget classs of this widget.
+ * Returns: none.
+ */
+
+static void
+ClassPartInitialize(class)
+WidgetClass class;
+{
+ SmeObjectClass m_ent, superC;
+
+ m_ent = (SmeObjectClass) class;
+ superC = (SmeObjectClass) m_ent->rect_class.superclass;
+
+/*
+ * We don't need to check for null super since we'll get to TextSink
+ * eventually.
+ */
+
+ if (m_ent->sme_class.highlight == XtInheritHighlight)
+ m_ent->sme_class.highlight = superC->sme_class.highlight;
+
+ if (m_ent->sme_class.unhighlight == XtInheritUnhighlight)
+ m_ent->sme_class.unhighlight = superC->sme_class.unhighlight;
+
+ if (m_ent->sme_class.notify == XtInheritNotify)
+ m_ent->sme_class.notify = superC->sme_class.notify;
+}
+
+/* Function Name: Initialize
+ * Description: Initializes the simple menu widget
+ * Arguments: request - the widget requested by the argument list.
+ * new - the new widget with both resource and non
+ * resource values.
+ * Returns: none.
+ *
+ * MENU ENTRIES CANNOT HAVE BORDERS.
+ */
+
+/* ARGSUSED */
+static void
+Initialize(request, new)
+Widget request, new;
+{
+ SmeObject entry = (SmeObject) new;
+
+ entry->rectangle.border_width = 0;
+}
+
+/* Function Name: Highlight
+ * Description: The default highlight proceedure for menu entries.
+ * Arguments: w - the menu entry.
+ * Returns: none.
+ */
+
+/* ARGSUSED */
+static void
+Highlight(w)
+Widget w;
+{
+/* This space intentionally left blank. */
+}
+
+/* Function Name: Unhighlight
+ * Description: The default unhighlight proceedure for menu entries.
+ * Arguments: w - the menu entry.
+ * Returns: none.
+ */
+
+/* ARGSUSED */
+static void
+Unhighlight(w)
+Widget w;
+{
+/* This space intentionally left blank. */
+}
+
+/* Function Name: Notify
+ * Description: calls the callback proceedures for this entry.
+ * Arguments: w - the menu entry.
+ * Returns: none.
+ */
+
+static void
+Notify(w)
+Widget w;
+{
+ XtCallCallbacks(w, XtNcallback, NULL);
+}
+
+/* Function Name: QueryGeometry.
+ * Description: Returns the preferred geometry for this widget.
+ * Arguments: w - the menu entry object.
+ * itended, return - the intended and return geometry info.
+ * Returns: A Geometry Result.
+ *
+ * See the Intrinsics manual for details on what this function is for.
+ *
+ * I just return the height and a width of 1.
+ */
+
+static XtGeometryResult
+QueryGeometry(w, intended, return_val)
+Widget w;
+XtWidgetGeometry *intended, *return_val;
+{
+ SmeObject entry = (SmeObject) w;
+ Dimension width;
+ XtGeometryResult ret_val = XtGeometryYes;
+ XtGeometryMask mode = intended->request_mode;
+
+ width = 1; /* we can be really small. */
+
+ if ( ((mode & CWWidth) && (intended->width != width)) ||
+ !(mode & CWWidth) ) {
+ return_val->request_mode |= CWWidth;
+ return_val->width = width;
+ mode = return_val->request_mode;
+
+ if ( (mode & CWWidth) && (width == entry->rectangle.width) )
+ return(XtGeometryNo);
+ return(XtGeometryAlmost);
+ }
+ return(ret_val);
+}