Blame lib/Xm/Gadget.c

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
}