|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Motif
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Copyright (c) 1987-2012, The Open Group. All rights reserved.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* These libraries and programs are free software; you can
|
|
Packit |
b099d7 |
* redistribute them and/or modify them under the terms of the GNU
|
|
Packit |
b099d7 |
* Lesser General Public License as published by the Free Software
|
|
Packit |
b099d7 |
* Foundation; either version 2 of the License, or (at your option)
|
|
Packit |
b099d7 |
* any later version.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* These libraries and programs are distributed in the hope that
|
|
Packit |
b099d7 |
* they will be useful, but WITHOUT ANY WARRANTY; without even the
|
|
Packit |
b099d7 |
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
Packit |
b099d7 |
* PURPOSE. See the GNU Lesser General Public License for more
|
|
Packit |
b099d7 |
* details.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
b099d7 |
* License along with these librararies and programs; if not, write
|
|
Packit |
b099d7 |
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
|
Packit |
b099d7 |
* Floor, Boston, MA 02110-1301 USA
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* HISTORY
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
#ifdef REV_INFO
|
|
Packit |
b099d7 |
#ifndef lint
|
|
Packit |
b099d7 |
static char rcsid[] = "$TOG: Gadget.c /main/17 1997/07/07 11:38:57 cshi $"
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
/* (c) Copyright 1987, 1988, 1989, 1990, 1991, 1992 HEWLETT-PACKARD COMPANY */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef HAVE_CONFIG_H
|
|
Packit |
b099d7 |
#include <config.h>
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include <ctype.h>
|
|
Packit |
b099d7 |
#include <stdio.h>
|
|
Packit |
b099d7 |
#include <X11/Intrinsic.h> /* <X11/Shell.h> doesn't define externalref */
|
|
Packit |
b099d7 |
#include <X11/IntrinsicP.h> /* <X11/ShellP.h> needs it. */
|
|
Packit |
b099d7 |
#include <X11/Shell.h>
|
|
Packit |
b099d7 |
#include <X11/ShellP.h>
|
|
Packit |
b099d7 |
#include <X11/Vendor.h>
|
|
Packit |
b099d7 |
#include <Xm/AccColorT.h>
|
|
Packit |
b099d7 |
#include <Xm/BaseClassP.h>
|
|
Packit |
b099d7 |
#include <Xm/DrawP.h>
|
|
Packit |
b099d7 |
#include <Xm/ExtObjectP.h>
|
|
Packit |
b099d7 |
#include <Xm/LayoutT.h>
|
|
Packit |
b099d7 |
#include <Xm/ManagerP.h>
|
|
Packit |
b099d7 |
#include <Xm/TraitP.h>
|
|
Packit |
b099d7 |
#include <Xm/UnitTypeT.h>
|
|
Packit |
b099d7 |
#include <Xm/UnhighlightT.h>
|
|
Packit |
b099d7 |
#include "XmI.h"
|
|
Packit |
b099d7 |
#include "BaseClassI.h"
|
|
Packit |
b099d7 |
#include "GadgetI.h"
|
|
Packit |
b099d7 |
#include "MessagesI.h"
|
|
Packit |
b099d7 |
#include "ResIndI.h"
|
|
Packit |
b099d7 |
#include "RepTypeI.h"
|
|
Packit |
b099d7 |
#include "SyntheticI.h"
|
|
Packit |
b099d7 |
#include "TraitI.h"
|
|
Packit |
b099d7 |
#include "TraversalI.h"
|
|
Packit |
b099d7 |
#include "ToolTipI.h"
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define INVALID_UNIT_TYPE 255
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define MESSAGE1 _XmMMsgGadget_0000
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/******** Static Function Declarations ********/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void GetHighlightColor(
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
int offset,
|
|
Packit |
b099d7 |
XtArgVal *value) ;
|
|
Packit |
b099d7 |
static void GetTopShadowColor(
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
int offset,
|
|
Packit |
b099d7 |
XtArgVal *value) ;
|
|
Packit |
b099d7 |
static void GetBottomShadowColor(
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
int offset,
|
|
Packit |
b099d7 |
XtArgVal *value) ;
|
|
Packit |
b099d7 |
static void ClassInitialize( void ) ;
|
|
Packit |
b099d7 |
static void ClassPartInit(
|
|
Packit |
b099d7 |
WidgetClass g) ;
|
|
Packit |
b099d7 |
static void SecondaryObjectCreate(
|
|
Packit |
b099d7 |
Widget req,
|
|
Packit |
b099d7 |
Widget new_w,
|
|
Packit |
b099d7 |
ArgList args,
|
|
Packit |
b099d7 |
Cardinal *num_args) ;
|
|
Packit |
b099d7 |
static void Initialize(
|
|
Packit |
b099d7 |
Widget rw,
|
|
Packit |
b099d7 |
Widget nw,
|
|
Packit |
b099d7 |
ArgList args,
|
|
Packit |
b099d7 |
Cardinal *num_args) ;
|
|
Packit |
b099d7 |
static void Destroy(
|
|
Packit |
b099d7 |
Widget w) ;
|
|
Packit |
b099d7 |
static Boolean SetValues(
|
|
Packit |
b099d7 |
Widget cw,
|
|
Packit |
b099d7 |
Widget rw,
|
|
Packit |
b099d7 |
Widget nw,
|
|
Packit |
b099d7 |
ArgList args,
|
|
Packit |
b099d7 |
Cardinal *num_args) ;
|
|
Packit |
b099d7 |
static void BorderHighlight(
|
|
Packit |
b099d7 |
Widget w) ;
|
|
Packit |
b099d7 |
static void BorderUnhighlight(
|
|
Packit |
b099d7 |
Widget w) ;
|
|
Packit |
b099d7 |
static void FocusChange(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
XmFocusChange change) ;
|
|
Packit |
b099d7 |
static XmNavigability WidgetNavigable(
|
|
Packit |
b099d7 |
Widget wid) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XmDirection GetDirection(Widget);
|
|
Packit |
b099d7 |
static void GetColors(Widget widget,
|
|
Packit |
b099d7 |
XmAccessColorData color_data);
|
|
Packit |
b099d7 |
static unsigned char GetUnitType(Widget widget);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void GetToolTipString (Widget wid,
|
|
Packit |
b099d7 |
int resource, /* unused */
|
|
Packit |
b099d7 |
XtArgVal * value);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XmImportOperator SetToolTipString (Widget wid,
|
|
Packit |
b099d7 |
int resource, /* unused */
|
|
Packit |
b099d7 |
XtArgVal * value);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/******** End Static Function Declarations ********/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Resource definitions for Subclasses of Gadget */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XtResource resources[] =
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNx, XmCPosition, XmRHorizontalPosition, sizeof(Position),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _WidgetRec, core.x), XmRImmediate, (XtPointer) 0
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNy, XmCPosition, XmRVerticalPosition, sizeof(Position),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _WidgetRec, core.y), XmRImmediate, (XtPointer) 0
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNwidth, XmCDimension, XmRHorizontalDimension, sizeof(Dimension),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _WidgetRec, core.width), XmRImmediate, (XtPointer) 0
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNheight, XmCDimension, XmRVerticalDimension, sizeof(Dimension),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _WidgetRec, core.height), XmRImmediate, (XtPointer) 0
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNborderWidth, XmCBorderWidth, XmRHorizontalDimension, sizeof(Dimension),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _WidgetRec, core.border_width), XmRImmediate, (XtPointer) 0
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNtraversalOn, XmCTraversalOn, XmRBoolean, sizeof (Boolean),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmGadgetRec, gadget.traversal_on),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) True
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNhighlightOnEnter, XmCHighlightOnEnter, XmRBoolean, sizeof (Boolean),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmGadgetRec, gadget.highlight_on_enter),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) False
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNhighlightThickness, XmCHighlightThickness, XmRHorizontalDimension,
|
|
Packit |
b099d7 |
sizeof (Dimension), XtOffsetOf( struct _XmGadgetRec, gadget.highlight_thickness),
|
|
Packit |
b099d7 |
XmRCallProc, (XtPointer) _XmSetThickness
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNshadowThickness, XmCShadowThickness, XmRHorizontalDimension,
|
|
Packit |
b099d7 |
sizeof (Dimension), XtOffsetOf( struct _XmGadgetRec, gadget.shadow_thickness),
|
|
Packit |
b099d7 |
XmRCallProc, (XtPointer) _XmSetThickness
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNunitType, XmCUnitType, XmRUnitType, sizeof (unsigned char),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmGadgetRec, gadget.unit_type),
|
|
Packit |
b099d7 |
XmRCallProc, (XtPointer) _XmUnitTypeDefault
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNnavigationType, XmCNavigationType, XmRNavigationType, sizeof (unsigned char),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmGadgetRec, gadget.navigation_type),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) XmNONE
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNhelpCallback, XmCCallback, XmRCallback, sizeof(XtCallbackList),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmGadgetRec, gadget.help_callback),
|
|
Packit |
b099d7 |
XmRPointer, (XtPointer) NULL
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNuserData, XmCUserData, XmRPointer, sizeof(XtPointer),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmGadgetRec, gadget.user_data),
|
|
Packit |
b099d7 |
XmRPointer, (XtPointer) NULL
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNlayoutDirection, XmCLayoutDirection, XmRDirection,
|
|
Packit |
b099d7 |
sizeof(XmDirection),
|
|
Packit |
b099d7 |
XtOffsetOf(XmGadgetRec, gadget.layout_direction),
|
|
Packit |
b099d7 |
XmRCallProc, (XtPointer) _XmDirectionDefault
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Definition for resources that need special processing in get values */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XmSyntheticResource syn_resources[] =
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
{ XmNx,
|
|
Packit |
b099d7 |
sizeof (Position),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _RectObjRec, rectangle.x),
|
|
Packit |
b099d7 |
XmeFromHorizontalPixels,
|
|
Packit |
b099d7 |
XmeToHorizontalPixels },
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNy,
|
|
Packit |
b099d7 |
sizeof (Position),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _RectObjRec, rectangle.y),
|
|
Packit |
b099d7 |
XmeFromVerticalPixels,
|
|
Packit |
b099d7 |
XmeToVerticalPixels },
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNwidth,
|
|
Packit |
b099d7 |
sizeof (Dimension),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _RectObjRec, rectangle.width),
|
|
Packit |
b099d7 |
XmeFromHorizontalPixels,
|
|
Packit |
b099d7 |
XmeToHorizontalPixels },
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNheight,
|
|
Packit |
b099d7 |
sizeof (Dimension),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _RectObjRec, rectangle.height),
|
|
Packit |
b099d7 |
XmeFromVerticalPixels,
|
|
Packit |
b099d7 |
XmeToVerticalPixels },
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNhighlightThickness,
|
|
Packit |
b099d7 |
sizeof (Dimension),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmGadgetRec, gadget.highlight_thickness),
|
|
Packit |
b099d7 |
XmeFromHorizontalPixels,
|
|
Packit |
b099d7 |
XmeToHorizontalPixels },
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNshadowThickness,
|
|
Packit |
b099d7 |
sizeof (Dimension),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmGadgetRec, gadget.shadow_thickness),
|
|
Packit |
b099d7 |
XmeFromHorizontalPixels,
|
|
Packit |
b099d7 |
XmeToHorizontalPixels },
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNhighlightColor,
|
|
Packit |
b099d7 |
sizeof (Pixel),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmGadgetRec, object.parent),
|
|
Packit |
b099d7 |
GetHighlightColor,
|
|
Packit |
b099d7 |
NULL },
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNtopShadowColor,
|
|
Packit |
b099d7 |
sizeof (Pixel),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmGadgetRec, object.parent),
|
|
Packit |
b099d7 |
GetTopShadowColor,
|
|
Packit |
b099d7 |
NULL },
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{ XmNbottomShadowColor,
|
|
Packit |
b099d7 |
sizeof (Pixel),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmGadgetRec, object.parent),
|
|
Packit |
b099d7 |
GetBottomShadowColor,
|
|
Packit |
b099d7 |
NULL },
|
|
Packit |
b099d7 |
{ XmNtoolTipString,
|
|
Packit |
b099d7 |
0,
|
|
Packit |
b099d7 |
0,
|
|
Packit |
b099d7 |
GetToolTipString, SetToolTipString },
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XmBaseClassExtRec baseClassExtRec = {
|
|
Packit |
b099d7 |
NULL,
|
|
Packit |
b099d7 |
NULLQUARK,
|
|
Packit |
b099d7 |
XmBaseClassExtVersion,
|
|
Packit |
b099d7 |
sizeof(XmBaseClassExtRec),
|
|
Packit |
b099d7 |
NULL, /* Initialize Prehook */
|
|
Packit |
b099d7 |
NULL, /* SetValues Prehook */
|
|
Packit |
b099d7 |
NULL, /* Initialize Posthook */
|
|
Packit |
b099d7 |
NULL, /* SetValues PostHook */
|
|
Packit |
b099d7 |
NULL, /* SecondaryObjectClass */
|
|
Packit |
b099d7 |
SecondaryObjectCreate, /* SecondaryObjectCreate */
|
|
Packit |
b099d7 |
NULL, /* getSecRes data */
|
|
Packit |
b099d7 |
{0}, /* fastSubclass flags */
|
|
Packit |
b099d7 |
NULL, /* GetValues Prehook */
|
|
Packit |
b099d7 |
NULL, /* GetValues Posthook */
|
|
Packit |
b099d7 |
NULL, /* classPartInitPrehook */
|
|
Packit |
b099d7 |
NULL, /* classPartInitPosthook*/
|
|
Packit |
b099d7 |
NULL, /* ext_resources */
|
|
Packit |
b099d7 |
NULL, /* compiled_ext_resources*/
|
|
Packit |
b099d7 |
0, /* num_ext_resources */
|
|
Packit |
b099d7 |
FALSE, /* use_sub_resources */
|
|
Packit |
b099d7 |
WidgetNavigable, /* widgetNavigable */
|
|
Packit |
b099d7 |
FocusChange, /* focusChange */
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XmGadgetClassExtRec _XmGadClassExtRec = {
|
|
Packit |
b099d7 |
NULL,
|
|
Packit |
b099d7 |
NULLQUARK,
|
|
Packit |
b099d7 |
XmGadgetClassExtVersion,
|
|
Packit |
b099d7 |
sizeof(XmGadgetClassExtRec),
|
|
Packit |
b099d7 |
NULL, /* widget_baseline */
|
|
Packit |
b099d7 |
NULL, /* widget_display_rect */
|
|
Packit |
b099d7 |
NULL, /* widget_margins */
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* The gadget class record definition */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
externaldef(xmgadgetclassrec) XmGadgetClassRec xmGadgetClassRec =
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
(WidgetClass) &rectObjClassRec, /* superclass */
|
|
Packit |
b099d7 |
"XmGadget", /* class_name */
|
|
Packit |
b099d7 |
sizeof(XmGadgetRec), /* widget_size */
|
|
Packit |
b099d7 |
ClassInitialize, /* class_initialize */
|
|
Packit |
b099d7 |
ClassPartInit, /* class part initialize */
|
|
Packit |
b099d7 |
False, /* class_inited */
|
|
Packit |
b099d7 |
Initialize, /* initialize */
|
|
Packit |
b099d7 |
NULL, /* initialize_hook */
|
|
Packit |
b099d7 |
NULL, /* realize */
|
|
Packit |
b099d7 |
NULL, /* actions */
|
|
Packit |
b099d7 |
0, /* num_actions */
|
|
Packit |
b099d7 |
resources, /* resources */
|
|
Packit |
b099d7 |
XtNumber(resources), /* num_resources */
|
|
Packit |
b099d7 |
NULLQUARK, /* xrm_class */
|
|
Packit |
b099d7 |
True, /* compress_motion */
|
|
Packit |
b099d7 |
True, /* compress_exposure */
|
|
Packit |
b099d7 |
True, /* compress_enterleave */
|
|
Packit |
b099d7 |
False, /* visible_interest */
|
|
Packit |
b099d7 |
Destroy, /* destroy */
|
|
Packit |
b099d7 |
NULL, /* resize */
|
|
Packit |
b099d7 |
NULL, /* expose */
|
|
Packit |
b099d7 |
SetValues, /* set_values */
|
|
Packit |
b099d7 |
NULL, /* set_values_hook */
|
|
Packit |
b099d7 |
XtInheritSetValuesAlmost, /* set_values_almost */
|
|
Packit |
b099d7 |
_XmGadgetGetValuesHook, /* get_values_hook */
|
|
Packit |
b099d7 |
NULL, /* accept_focus */
|
|
Packit |
b099d7 |
XtVersion, /* version */
|
|
Packit |
b099d7 |
NULL, /* callback private */
|
|
Packit |
b099d7 |
NULL, /* tm_table */
|
|
Packit |
b099d7 |
NULL, /* query_geometry */
|
|
Packit |
b099d7 |
NULL, /* display_accelerator */
|
|
Packit |
b099d7 |
(XtPointer)&baseClassExtRec, /* extension */
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
BorderHighlight, /* border_highlight */
|
|
Packit |
b099d7 |
BorderUnhighlight, /* border_unhighlight */
|
|
Packit |
b099d7 |
NULL, /* arm_and_activate */
|
|
Packit |
b099d7 |
NULL, /* input_dispatch */
|
|
Packit |
b099d7 |
NULL, /* visual_change */
|
|
Packit |
b099d7 |
syn_resources, /* syn resources */
|
|
Packit |
b099d7 |
XtNumber(syn_resources), /* num_syn_resources */
|
|
Packit |
b099d7 |
NULL, /* cache_part */
|
|
Packit |
b099d7 |
(XtPointer)&_XmGadClassExtRec, /* extension */
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
externaldef(xmgadgetclass) WidgetClass xmGadgetClass =
|
|
Packit |
b099d7 |
(WidgetClass) &xmGadgetClassRec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Access Colors Trait record for Gadget */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XmConst XmAccessColorsTraitRec gadACT = {
|
|
Packit |
b099d7 |
0, /* version */
|
|
Packit |
b099d7 |
GetColors
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Unit Type Trait record for Gadget */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XmConst XmSpecUnitTypeTraitRec gadUTT = {
|
|
Packit |
b099d7 |
0, /* version */
|
|
Packit |
b099d7 |
GetUnitType
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XmConst XmSpecifyLayoutDirectionTraitRec gadLDT = {
|
|
Packit |
b099d7 |
0, /* version */
|
|
Packit |
b099d7 |
GetDirection
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* The following functions are synthetic hooks.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
************************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetHighlightColor(
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
int offset, /* unused */
|
|
Packit |
b099d7 |
XtArgVal *value )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmManagerWidget mw = (XmManagerWidget) XtParent(w);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
*value = (XtArgVal) mw->manager.highlight_color;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetTopShadowColor(
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
int offset, /* unused */
|
|
Packit |
b099d7 |
XtArgVal *value )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmManagerWidget mw = (XmManagerWidget) XtParent(w);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
*value = (XtArgVal) mw->manager.top_shadow_color;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetBottomShadowColor(
|
|
Packit |
b099d7 |
Widget w,
|
|
Packit |
b099d7 |
int offset, /* unused */
|
|
Packit |
b099d7 |
XtArgVal *value )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmManagerWidget mw = (XmManagerWidget) XtParent(w);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
*value = (XtArgVal) mw->manager.bottom_shadow_color;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* ClassInitialize
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
************************************************************************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
ClassInitialize( void )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
_XmInitializeExtensions();
|
|
Packit |
b099d7 |
_XmInitializeTraits();
|
|
Packit |
b099d7 |
baseClassExtRec.record_type = XmQmotif;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* ClassPartInit
|
|
Packit |
b099d7 |
* Used by subclasses of gadget to inherit class record procedures.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
************************************************************************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
ClassPartInit(
|
|
Packit |
b099d7 |
WidgetClass g )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
static Boolean first_time = TRUE;
|
|
Packit |
b099d7 |
XmGadgetClass wc = (XmGadgetClass) g;
|
|
Packit |
b099d7 |
XmGadgetClass super = (XmGadgetClass) wc->rect_class.superclass;
|
|
Packit |
b099d7 |
XmGadgetClassExt *wcePtr, *scePtr;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
wcePtr = _XmGetGadgetClassExtPtr(wc, NULLQUARK);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (((WidgetClass)wc != xmGadgetClass) &&
|
|
Packit |
b099d7 |
(*wcePtr)) {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
scePtr = _XmGetGadgetClassExtPtr(super, NULLQUARK);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((*wcePtr)->widget_baseline == XmInheritBaselineProc)
|
|
Packit |
b099d7 |
(*wcePtr)->widget_baseline = (*scePtr)->widget_baseline;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((*wcePtr)->widget_display_rect == XmInheritDisplayRectProc)
|
|
Packit |
b099d7 |
(*wcePtr)->widget_display_rect = (*scePtr)->widget_display_rect;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((*wcePtr)->widget_margins == XmInheritMarginsProc)
|
|
Packit |
b099d7 |
(*wcePtr)->widget_margins = (*scePtr)->widget_margins;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (wc->gadget_class.border_highlight == XmInheritWidgetProc)
|
|
Packit |
b099d7 |
wc->gadget_class.border_highlight =
|
|
Packit |
b099d7 |
super->gadget_class.border_highlight;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (wc->gadget_class.border_unhighlight == XmInheritWidgetProc)
|
|
Packit |
b099d7 |
wc->gadget_class.border_unhighlight =
|
|
Packit |
b099d7 |
super->gadget_class.border_unhighlight;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (wc->gadget_class.arm_and_activate == XmInheritArmAndActivate)
|
|
Packit |
b099d7 |
wc->gadget_class.arm_and_activate =
|
|
Packit |
b099d7 |
super->gadget_class.arm_and_activate;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (wc->gadget_class.input_dispatch == XmInheritInputDispatch)
|
|
Packit |
b099d7 |
wc->gadget_class.input_dispatch =
|
|
Packit |
b099d7 |
super->gadget_class.input_dispatch;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (wc->gadget_class.visual_change == XmInheritVisualChange)
|
|
Packit |
b099d7 |
wc->gadget_class.visual_change =
|
|
Packit |
b099d7 |
super->gadget_class.visual_change;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmFastSubclassInit (g, XmGADGET_BIT);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (first_time)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
_XmReOrderResourceList(xmGadgetClass, XmNunitType, NULL);
|
|
Packit |
b099d7 |
first_time = FALSE;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmBuildGadgetResources((WidgetClass) wc);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Install the direction trait for all subclasses as well. */
|
|
Packit |
b099d7 |
XmeTraitSet((XtPointer)wc, XmQTspecifyLayoutDirection, (XtPointer)&gadLDT);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Install the accessColors trait for all subclasses as well. */
|
|
Packit |
b099d7 |
XmeTraitSet((XtPointer)wc, XmQTaccessColors, (XtPointer)&gadACT);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Install the unit type trait for all subclasses as well. */
|
|
Packit |
b099d7 |
XmeTraitSet((XtPointer)wc, XmQTspecifyUnitType, (XtPointer)&gadUTT);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* SecondaryObjectCreate
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
************************************************************************/
|
|
Packit |
b099d7 |
/* ARGSUSED */
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
SecondaryObjectCreate(
|
|
Packit |
b099d7 |
Widget req,
|
|
Packit |
b099d7 |
Widget new_w,
|
|
Packit |
b099d7 |
ArgList args,
|
|
Packit |
b099d7 |
Cardinal *num_args )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmBaseClassExt *cePtr;
|
|
Packit |
b099d7 |
Arg myArgs[1];
|
|
Packit |
b099d7 |
ArgList mergedArgs;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtSetArg(myArgs[0] ,XmNlogicalParent, new_w);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (*num_args)
|
|
Packit |
b099d7 |
mergedArgs = XtMergeArgLists(args, *num_args, myArgs, XtNumber(myArgs));
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
mergedArgs = myArgs;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
cePtr = _XmGetBaseClassExtPtr(XtClass(new_w), XmQmotif);
|
|
Packit |
b099d7 |
(void) XtCreateWidget(XtName(new_w),
|
|
Packit |
b099d7 |
(*cePtr)->secondaryObjectClass,
|
|
Packit |
b099d7 |
XtParent(new_w) ? XtParent(new_w) : new_w,
|
|
Packit |
b099d7 |
mergedArgs, *num_args + 1);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (mergedArgs != myArgs)
|
|
Packit |
b099d7 |
XtFree( (char *) mergedArgs);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Initialize
|
|
Packit |
b099d7 |
* The main widget instance initialization routine.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
************************************************************************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
Initialize(
|
|
Packit |
b099d7 |
Widget rw,
|
|
Packit |
b099d7 |
Widget nw,
|
|
Packit |
b099d7 |
ArgList args,
|
|
Packit |
b099d7 |
Cardinal *num_args )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmGadget request = (XmGadget) rw ;
|
|
Packit |
b099d7 |
XmGadget gw = (XmGadget) nw;
|
|
Packit |
b099d7 |
XmBaseClassExt *cePtr;
|
|
Packit |
b099d7 |
XtInitProc secondaryCreate;
|
|
Packit |
b099d7 |
XmString tool_tip_string;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XtResource subresources[] =
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNtoolTipString, XmCToolTipString, XmRXmString,
|
|
Packit |
b099d7 |
sizeof(XmString), 0,
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) NULL
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( !XmRepTypeValidValue( XmRID_UNIT_TYPE, gw->gadget.unit_type,
|
|
Packit |
b099d7 |
(Widget) gw) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
gw->gadget.unit_type = XmPIXELS;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Convert the fields from unit values to pixel values */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmGadgetImportArgs( (Widget) gw, args, num_args);
|
|
Packit |
b099d7 |
_XmGadgetImportSecondaryArgs( (Widget) gw, args, num_args);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
cePtr = _XmGetBaseClassExtPtr(XtClass(gw), XmQmotif);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((*cePtr) &&
|
|
Packit |
b099d7 |
(*cePtr)->secondaryObjectClass &&
|
|
Packit |
b099d7 |
(secondaryCreate = (*cePtr)->secondaryObjectCreate))
|
|
Packit |
b099d7 |
(*secondaryCreate)( (Widget) request, (Widget) gw, args, num_args);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtGetSubresources(nw, &tool_tip_string, NULL, NULL,
|
|
Packit |
b099d7 |
subresources, XtNumber(subresources),
|
|
Packit |
b099d7 |
args, *num_args);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmSetToolTipString(nw, tool_tip_string);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
gw->gadget.event_mask = 0;
|
|
Packit |
b099d7 |
gw->gadget.have_traversal = FALSE ;
|
|
Packit |
b099d7 |
gw->gadget.highlighted = FALSE ;
|
|
Packit |
b099d7 |
gw->gadget.highlight_drawn = FALSE ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( (gw->gadget.navigation_type != XmDYNAMIC_DEFAULT_TAB_GROUP)
|
|
Packit |
b099d7 |
&& !XmRepTypeValidValue( XmRID_NAVIGATION_TYPE,
|
|
Packit |
b099d7 |
gw->gadget.navigation_type, (Widget) gw) )
|
|
Packit |
b099d7 |
{ gw->gadget.navigation_type = XmNONE ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmNavigInitialize ((Widget) request, (Widget) gw, args, num_args);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
gw->gadget.have_traversal = FALSE ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Check the geometry information for the widget */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (request->rectangle.width == 0)
|
|
Packit |
b099d7 |
gw->rectangle.width += gw->gadget.highlight_thickness * 2 +
|
|
Packit |
b099d7 |
gw->gadget.shadow_thickness * 2;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (request->rectangle.height == 0)
|
|
Packit |
b099d7 |
gw->rectangle.height += gw->gadget.highlight_thickness * 2 +
|
|
Packit |
b099d7 |
gw->gadget.shadow_thickness * 2;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Force the border width to 0 */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
gw->rectangle.border_width = 0;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Destroy
|
|
Packit |
b099d7 |
* Clean up allocated resources when the widget is destroyed.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
************************************************************************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
Destroy(
|
|
Packit |
b099d7 |
Widget w )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmGadget g = (XmGadget)w;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmNavigDestroy(w);
|
|
Packit |
b099d7 |
#ifdef FIX_1388
|
|
Packit |
b099d7 |
_XmToolTipRemove(w);
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
_XmToolTipLeave(w, NULL, NULL, NULL);
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* SetValues
|
|
Packit |
b099d7 |
* Perform and updating necessary for a set values call.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
************************************************************************/
|
|
Packit |
b099d7 |
static Boolean
|
|
Packit |
b099d7 |
SetValues(
|
|
Packit |
b099d7 |
Widget cw,
|
|
Packit |
b099d7 |
Widget rw,
|
|
Packit |
b099d7 |
Widget nw,
|
|
Packit |
b099d7 |
ArgList args,
|
|
Packit |
b099d7 |
Cardinal *num_args )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmGadget cur = (XmGadget) cw ;
|
|
Packit |
b099d7 |
XmGadget req = (XmGadget) rw ;
|
|
Packit |
b099d7 |
XmGadget new_w = (XmGadget) nw ;
|
|
Packit |
b099d7 |
Boolean returnFlag;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (XtIsSensitive(cw) != XtIsSensitive(nw))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (!XtIsSensitive(nw))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
_XmToolTipLeave(nw, NULL, NULL, NULL);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (XmGetToolTipString(nw) != XmGetToolTipString(cw))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmSetToolTipString(cw, XmGetToolTipString(nw));
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* CR 7124: XmNlayoutDirection is a CG resource. */
|
|
Packit |
b099d7 |
if (cur->gadget.layout_direction != new_w->gadget.layout_direction)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmeWarning((Widget) new_w, MESSAGE1);
|
|
Packit |
b099d7 |
new_w->gadget.layout_direction = cur->gadget.layout_direction;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( cur->gadget.navigation_type != new_w->gadget.navigation_type )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if( !XmRepTypeValidValue( XmRID_NAVIGATION_TYPE,
|
|
Packit |
b099d7 |
new_w->gadget.navigation_type, (Widget) new_w) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
new_w->gadget.navigation_type = cur->gadget.navigation_type ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
returnFlag = _XmNavigSetValues ((Widget) cur, (Widget) req, (Widget) new_w,
|
|
Packit |
b099d7 |
args, num_args);
|
|
Packit |
b099d7 |
/* Validate changed data. */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( !XmRepTypeValidValue( XmRID_UNIT_TYPE, new_w->gadget.unit_type,
|
|
Packit |
b099d7 |
(Widget) new_w) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
new_w->gadget.unit_type = cur->gadget.unit_type;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Convert the necessary fields from unit values to pixel values */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmGadgetImportArgs((Widget) new_w, args, num_args);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Check for resize conditions */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (cur->gadget.shadow_thickness != new_w->gadget.shadow_thickness ||
|
|
Packit |
b099d7 |
cur->gadget.highlight_thickness != new_w->gadget.highlight_thickness)
|
|
Packit |
b099d7 |
returnFlag = True;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Force the border width to 0 */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
new_w->rectangle.border_width = 0;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( new_w->gadget.highlight_drawn
|
|
Packit |
b099d7 |
&& ( !XtIsSensitive( (Widget) new_w)
|
|
Packit |
b099d7 |
|| ( cur->gadget.highlight_on_enter
|
|
Packit |
b099d7 |
&& !(new_w->gadget.highlight_on_enter)
|
|
Packit |
b099d7 |
&& (_XmGetFocusPolicy( (Widget) new_w) == XmPOINTER))) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if( ((XmGadgetClass) XtClass( new_w))
|
|
Packit |
b099d7 |
->gadget_class.border_unhighlight )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
(*(((XmGadgetClass) XtClass( new_w))
|
|
Packit |
b099d7 |
->gadget_class.border_unhighlight))( (Widget) new_w) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Return a flag which may indicate that a redraw needs to occur. */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return (returnFlag);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/**********************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* _XmBuildGadgetResources
|
|
Packit |
b099d7 |
* Build up the gadget's synthetic resource processing list
|
|
Packit |
b099d7 |
* by combining the super classes with this class.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
**********************************************************************/
|
|
Packit |
b099d7 |
void
|
|
Packit |
b099d7 |
_XmBuildGadgetResources(
|
|
Packit |
b099d7 |
WidgetClass c )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmGadgetClass wc = (XmGadgetClass) c ;
|
|
Packit |
b099d7 |
XmGadgetClass sc;
|
|
Packit |
b099d7 |
XmBaseClassExt *classExtPtr;
|
|
Packit |
b099d7 |
XmExtClassRec *secondaryObjClass;
|
|
Packit |
b099d7 |
WidgetClass secObjSuperClass;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmProcessLock();
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sc = (XmGadgetClass) wc->rect_class.superclass;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
_XmInitializeSyntheticResources(wc->gadget_class.syn_resources,
|
|
Packit |
b099d7 |
wc->gadget_class.num_syn_resources);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* RectObj has no synthetic resources to incorporate.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if (sc != (XmGadgetClass) rectObjClass)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
_XmBuildResources (&(wc->gadget_class.syn_resources),
|
|
Packit |
b099d7 |
&(wc->gadget_class.num_syn_resources),
|
|
Packit |
b099d7 |
sc->gadget_class.syn_resources,
|
|
Packit |
b099d7 |
sc->gadget_class.num_syn_resources);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
classExtPtr = _XmGetBaseClassExtPtr(c, XmQmotif);
|
|
Packit |
b099d7 |
secondaryObjClass = (XmExtClassRec *)
|
|
Packit |
b099d7 |
((*classExtPtr)->secondaryObjectClass);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Not all gadgets have secondary objects.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if (secondaryObjClass == NULL) {_XmProcessUnlock(); return; }
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
secObjSuperClass = secondaryObjClass->object_class.superclass;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* secondary object resources have already been inited when they are
|
|
Packit |
b099d7 |
* inherited
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if (!secObjSuperClass->core_class.class_inited) {
|
|
Packit |
b099d7 |
_XmInitializeSyntheticResources(
|
|
Packit |
b099d7 |
secondaryObjClass->ext_class.syn_resources,
|
|
Packit |
b099d7 |
secondaryObjClass->ext_class.num_syn_resources);
|
|
Packit |
b099d7 |
secObjSuperClass->core_class.class_inited = True;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* ExtObject has no synthetic resources to incorporate.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
if (secObjSuperClass != (WidgetClass) xmExtObjectClass)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
_XmBuildResources (
|
|
Packit |
b099d7 |
&(secondaryObjClass->ext_class.syn_resources),
|
|
Packit |
b099d7 |
&(secondaryObjClass->ext_class.num_syn_resources),
|
|
Packit |
b099d7 |
((XmExtClassRec *)secObjSuperClass)
|
|
Packit |
b099d7 |
->ext_class.syn_resources,
|
|
Packit |
b099d7 |
((XmExtClassRec *)secObjSuperClass)
|
|
Packit |
b099d7 |
->ext_class.num_syn_resources);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
_XmProcessUnlock();
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
BorderHighlight(
|
|
Packit |
b099d7 |
Widget w )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmGadget g ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
g = (XmGadget) w ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
g->gadget.highlighted = True ;
|
|
Packit |
b099d7 |
g->gadget.highlight_drawn = True ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( g->rectangle.width == 0 || g->rectangle.height == 0
|
|
Packit |
b099d7 |
|| g->gadget.highlight_thickness == 0 )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmeDrawHighlight( XtDisplay( (Widget) g), XtWindow( (Widget) g),
|
|
Packit |
b099d7 |
((XmManagerWidget)(g->object.parent))->manager.highlight_GC,
|
|
Packit |
b099d7 |
g->rectangle.x, g->rectangle.y, g->rectangle.width,
|
|
Packit |
b099d7 |
g->rectangle.height, g->gadget.highlight_thickness) ;
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
BorderUnhighlight(
|
|
Packit |
b099d7 |
Widget w )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmGadget g = (XmGadget) w ;
|
|
Packit |
b099d7 |
XmSpecifyUnhighlightTrait UnhighlightT;
|
|
Packit |
b099d7 |
GC manager_background_GC;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
g->gadget.highlighted = False ;
|
|
Packit |
b099d7 |
g->gadget.highlight_drawn = False ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( g->rectangle.width == 0
|
|
Packit |
b099d7 |
|| g->rectangle.height == 0
|
|
Packit |
b099d7 |
|| g->gadget.highlight_thickness == 0)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* If unhighlight trait in parent use specified GC, else just clear area */
|
|
Packit |
b099d7 |
if ( XmIsManager(g->object.parent)
|
|
Packit |
b099d7 |
&& ((UnhighlightT=(XmSpecifyUnhighlightTrait)XmeTraitGet((XtPointer)
|
|
Packit |
b099d7 |
XtClass(g->object.parent), XmQTspecifyUnhighlight)) != NULL)
|
|
Packit |
b099d7 |
&& (UnhighlightT->getUnhighlightGC != NULL))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* Get and use parent's specified background GC for unhighlighting */
|
|
Packit |
b099d7 |
manager_background_GC =
|
|
Packit |
b099d7 |
UnhighlightT->getUnhighlightGC( g->object.parent, w);
|
|
Packit |
b099d7 |
XmeDrawHighlight( XtDisplay( g), XtWindow( g),
|
|
Packit |
b099d7 |
manager_background_GC,
|
|
Packit |
b099d7 |
g->rectangle.x, g->rectangle.y,
|
|
Packit |
b099d7 |
g->rectangle.width, g->rectangle.height,
|
|
Packit |
b099d7 |
g->gadget.highlight_thickness) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmeClearBorder( XtDisplay( g), XtWindow( g),
|
|
Packit |
b099d7 |
g->rectangle.x, g->rectangle.y,
|
|
Packit |
b099d7 |
g->rectangle.width, g->rectangle.height,
|
|
Packit |
b099d7 |
g->gadget.highlight_thickness) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
FocusChange(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
XmFocusChange change)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* Enter/Leave is called only in pointer mode,
|
|
Packit |
b099d7 |
* Focus in/out only called in explicit mode.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
switch( change )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
case XmENTER:
|
|
Packit |
b099d7 |
if( !(((XmGadget) wid)->gadget.highlight_on_enter) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
break ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/* Drop through. */
|
|
Packit |
b099d7 |
case XmFOCUS_IN:
|
|
Packit |
b099d7 |
if( change == XmFOCUS_IN ) /* Because of drop-though. */
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
((XmGadget) wid)->gadget.have_traversal = TRUE ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if( ((XmGadgetClass) XtClass( wid))
|
|
Packit |
b099d7 |
->gadget_class.border_highlight )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
(*(((XmGadgetClass) XtClass( wid))
|
|
Packit |
b099d7 |
->gadget_class.border_highlight))( wid) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break ;
|
|
Packit |
b099d7 |
case XmLEAVE:
|
|
Packit |
b099d7 |
if( !(((XmGadget) wid)->gadget.highlight_on_enter) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
break ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
/* Drop through. */
|
|
Packit |
b099d7 |
case XmFOCUS_OUT:
|
|
Packit |
b099d7 |
if( change == XmFOCUS_OUT ) /* Because of drop-though. */
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
((XmGadget) wid)->gadget.have_traversal = FALSE ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if( ((XmGadgetClass) XtClass( wid))
|
|
Packit |
b099d7 |
->gadget_class.border_unhighlight )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
(*(((XmGadgetClass) XtClass( wid))
|
|
Packit |
b099d7 |
->gadget_class.border_unhighlight))( wid) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
break ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XmNavigability
|
|
Packit |
b099d7 |
WidgetNavigable(
|
|
Packit |
b099d7 |
Widget wid)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if( XtIsSensitive(wid)
|
|
Packit |
b099d7 |
&& ((XmGadget) wid)->gadget.traversal_on )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNavigationType nav_type = ((XmGadget) wid)->gadget.navigation_type ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( (nav_type == XmSTICKY_TAB_GROUP)
|
|
Packit |
b099d7 |
|| (nav_type == XmEXCLUSIVE_TAB_GROUP)
|
|
Packit |
b099d7 |
|| ( (nav_type == XmTAB_GROUP)
|
|
Packit |
b099d7 |
&& !_XmShellIsExclusive( wid)) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return XmTAB_NAVIGABLE ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
return XmCONTROL_NAVIGABLE ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
return XmNOT_NAVIGABLE ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetColors(Widget w,
|
|
Packit |
b099d7 |
XmAccessColorData color_data)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmManagerWidget parent = (XmManagerWidget) XtParent(w);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
color_data->valueMask = AccessForeground | AccessBackgroundPixel |
|
|
Packit |
b099d7 |
AccessHighlightColor | AccessTopShadowColor | AccessBottomShadowColor;
|
|
Packit |
b099d7 |
color_data->background = parent->core.background_pixel;
|
|
Packit |
b099d7 |
color_data->foreground = parent->manager.foreground;
|
|
Packit |
b099d7 |
color_data->highlight_color = parent->manager.highlight_color;
|
|
Packit |
b099d7 |
color_data->top_shadow_color = parent->manager.top_shadow_color;
|
|
Packit |
b099d7 |
color_data->bottom_shadow_color = parent->manager.bottom_shadow_color;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static unsigned char
|
|
Packit |
b099d7 |
GetUnitType(Widget w)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return ((XmGadget) w)->gadget.unit_type ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XmDirection
|
|
Packit |
b099d7 |
GetDirection(Widget w)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return ((XmGadget)(w))->gadget.layout_direction;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetToolTipString(Widget wid,
|
|
Packit |
b099d7 |
int resource, /* unused */
|
|
Packit |
b099d7 |
XtArgVal * value)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmString string = XmGetToolTipString (wid);
|
|
Packit |
b099d7 |
*value = (XtArgVal) string;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmImportOperator
|
|
Packit |
b099d7 |
SetToolTipString(Widget wid,
|
|
Packit |
b099d7 |
int resource, /* unused */
|
|
Packit |
b099d7 |
XtArgVal * value)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmSetToolTipString (wid, (XmString)*value);
|
|
Packit |
b099d7 |
return XmSYNTHETIC_NONE;
|
|
Packit |
b099d7 |
}
|