Blame lib/Xm/Primitive.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: Primitive.c /main/25 1999/01/27 16:08:04 mgreess $"
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 <Xm/AccColorT.h>
Packit b099d7
#include <Xm/ActivatableT.h>
Packit b099d7
#include <Xm/CareVisualT.h>
Packit b099d7
#include <Xm/DrawP.h>
Packit b099d7
#include <Xm/DisplayP.h>
Packit b099d7
#include <Xm/GadgetP.h>
Packit b099d7
#include <Xm/LayoutT.h>
Packit b099d7
#include <Xm/ManagerP.h>
Packit b099d7
#include <Xm/TraitP.h>
Packit b099d7
#include <Xm/TransltnsP.h>
Packit b099d7
#include <Xm/UnitTypeT.h>
Packit b099d7
#include <Xm/UnhighlightT.h>
Packit b099d7
#include "BaseClassI.h"
Packit b099d7
#include "ColorI.h"
Packit b099d7
#include "MessagesI.h"
Packit b099d7
#include "PixConvI.h"
Packit b099d7
#include "PrimitiveI.h"
Packit b099d7
#include "RepTypeI.h"
Packit b099d7
#include "ResConverI.h"
Packit b099d7
#include "ResIndI.h"
Packit b099d7
#include "SyntheticI.h"
Packit b099d7
#include "ToolTipI.h"
Packit b099d7
#include "TraitI.h"
Packit b099d7
#include "TravActI.h"
Packit b099d7
#include "TraversalI.h"
Packit b099d7
#include "UniqueEvnI.h"
Packit b099d7
#include "XmI.h"
Packit b099d7
Packit b099d7
Packit b099d7
#define MESSAGE1	_XmMMsgPrimitive_0000
Packit b099d7
Packit b099d7
Packit b099d7
/********    Static Function Declarations    ********/
Packit b099d7
Packit b099d7
static void GetXFromShell( 
Packit b099d7
			 Widget wid,
Packit b099d7
			 int resource_offset,
Packit b099d7
			 XtArgVal *value) ;
Packit b099d7
static void GetYFromShell( 
Packit b099d7
			 Widget wid,
Packit b099d7
			 int resource_offset,
Packit b099d7
			 XtArgVal *value) ;
Packit b099d7
Packit b099d7
static void ClassInitialize( void ) ;
Packit b099d7
static void BuildPrimitiveResources(
Packit b099d7
			 WidgetClass c ) ;
Packit b099d7
static void ClassPartInitialize( 
Packit b099d7
			 WidgetClass w) ;
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 Realize( 
Packit b099d7
			 register Widget w,
Packit b099d7
			 XtValueMask *p_valueMask,
Packit b099d7
			 XSetWindowAttributes *attributes) ;
Packit b099d7
static void Destroy( 
Packit b099d7
			 Widget w) ;
Packit b099d7
static void Redisplay (
Packit b099d7
			 Widget w,
Packit b099d7
			 XEvent *event,
Packit b099d7
			 Region region);
Packit b099d7
static Boolean SetValues( 
Packit b099d7
			 Widget current,
Packit b099d7
			 Widget request,
Packit b099d7
			 Widget new_w,
Packit b099d7
			 ArgList args,
Packit b099d7
			 Cardinal *num_args) ;
Packit b099d7
static void HighlightBorder( 
Packit b099d7
			 Widget w) ;
Packit b099d7
static void UnhighlightBorder( 
Packit b099d7
			 Widget w) ;
Packit b099d7
static XmNavigability WidgetNavigable( 
Packit b099d7
			 Widget wid) ;
Packit b099d7
static void FocusChange( 
Packit b099d7
			 Widget wid,
Packit b099d7
			 XmFocusChange change) ;
Packit b099d7
static Boolean Redraw (Widget kid, 
Packit b099d7
			Widget cur_parent,
Packit b099d7
			Widget new_parent,
Packit b099d7
			Mask visual_flag);
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);
Packit b099d7
static void GetToolTipString(
Packit b099d7
                         Widget wid,
Packit b099d7
                         int resource, /* unused */
Packit b099d7
                         XtArgVal * value);
Packit b099d7
static XmImportOperator SetToolTipString(
Packit b099d7
                         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
 *
Packit b099d7
 *   Default translation table
Packit b099d7
 *	These translations will be compiled at class initialize.  When
Packit b099d7
 *	a subclass of primitive is created then these translations will
Packit b099d7
 *	be used to augment the translations of the subclass IFF
Packit b099d7
 *	traversal is on.  The SetValues routine will also augment
Packit b099d7
 *	a subclass's translations table IFF traversal goes from off to on.
Packit b099d7
 *	Since we are augmenting it should not be a problem when
Packit b099d7
 *	traversal goes from off to on to off and on again.
Packit b099d7
 *
Packit b099d7
 ************************************************************************/
Packit b099d7
Packit b099d7
#define defaultTranslations	_XmPrimitive_defaultTranslations
Packit b099d7
Packit b099d7
Packit b099d7
/************************************************************************
Packit b099d7
 *
Packit b099d7
 *   Action list.
Packit b099d7
 *
Packit b099d7
 *************************************<->***********************************/
Packit b099d7
Packit b099d7
static XtActionsRec actions[] =
Packit b099d7
{
Packit b099d7
  {"PrimitiveFocusIn",         _XmPrimitiveFocusIn},
Packit b099d7
  {"PrimitiveFocusOut",        _XmPrimitiveFocusOut},
Packit b099d7
  {"PrimitiveUnmap",           _XmPrimitiveUnmap},
Packit b099d7
  {"PrimitiveHelp",            _XmPrimitiveHelp},
Packit b099d7
  {"PrimitiveEnter",           _XmPrimitiveEnter},
Packit b099d7
  {"PrimitiveLeave",           _XmPrimitiveLeave},
Packit b099d7
  {"PrimitiveTraverseLeft",    _XmTraverseLeft},
Packit b099d7
  {"PrimitiveTraverseRight",   _XmTraverseRight},
Packit b099d7
  {"PrimitiveTraverseUp",      _XmTraverseUp },
Packit b099d7
  {"PrimitiveTraverseDown",    _XmTraverseDown },
Packit b099d7
  {"PrimitiveTraverseNext",    _XmTraverseNext },
Packit b099d7
  {"PrimitiveTraversePrev",    _XmTraversePrev },
Packit b099d7
  {"PrimitiveTraverseHome",    _XmTraverseHome },
Packit b099d7
  {"PrimitiveNextTabGroup",    _XmTraverseNextTabGroup },
Packit b099d7
  {"PrimitivePrevTabGroup",    _XmTraversePrevTabGroup },
Packit b099d7
  {"PrimitiveParentActivate",  _XmPrimitiveParentActivate },
Packit b099d7
  {"PrimitiveParentCancel",    _XmPrimitiveParentCancel },
Packit b099d7
  {"unmap",                    _XmPrimitiveUnmap},      /* Motif 1.0 BC. */
Packit b099d7
  {"Help",                     _XmPrimitiveHelp},       /* Motif 1.0 BC. */
Packit b099d7
  {"enter",                    _XmPrimitiveEnter},      /* Motif 1.0 BC. */
Packit b099d7
  {"leave",                    _XmPrimitiveLeave},      /* Motif 1.0 BC. */
Packit b099d7
  {"PrevTabGroup",	       _XmTraversePrevTabGroup},/* Motif 1.0 BC. */
Packit b099d7
  {"NextTabGroup",	       _XmTraverseNextTabGroup},/* Motif 1.0 BC. */
Packit b099d7
};
Packit b099d7
Packit b099d7
Packit b099d7
/*****************************************/
Packit b099d7
/*  Resource definitions for XmPrimitive */
Packit b099d7
Packit b099d7
static XtResource resources[] =
Packit b099d7
{
Packit b099d7
   {
Packit b099d7
     XmNunitType, XmCUnitType, XmRUnitType, 
Packit b099d7
     sizeof (unsigned char), XtOffsetOf(XmPrimitiveRec, primitive.unit_type),
Packit b099d7
     XmRCallProc, (XtPointer) _XmUnitTypeDefault
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
     XmNx, XmCPosition, XmRHorizontalPosition, 
Packit b099d7
     sizeof(Position), XtOffsetOf(WidgetRec, core.x), 
Packit b099d7
     XmRImmediate, (XtPointer) 0
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
     XmNy, XmCPosition, XmRVerticalPosition, 
Packit b099d7
     sizeof(Position), XtOffsetOf(WidgetRec, core.y), 
Packit b099d7
     XmRImmediate, (XtPointer) 0
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
     XmNwidth, XmCDimension, XmRHorizontalDimension, 
Packit b099d7
     sizeof(Dimension), XtOffsetOf(WidgetRec, core.width), 
Packit b099d7
     XmRImmediate, (XtPointer) 0
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
     XmNheight, XmCDimension, XmRVerticalDimension, 
Packit b099d7
     sizeof(Dimension), XtOffsetOf(WidgetRec, core.height), 
Packit b099d7
     XmRImmediate, (XtPointer) 0
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
     XmNborderWidth, XmCBorderWidth, XmRHorizontalDimension, 
Packit b099d7
     sizeof(Dimension), XtOffsetOf(WidgetRec, core.border_width), 
Packit b099d7
     XmRImmediate, (XtPointer) 0
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
     XmNforeground, XmCForeground, XmRPixel, 
Packit b099d7
     sizeof (Pixel), XtOffsetOf(XmPrimitiveRec, primitive.foreground),
Packit b099d7
     XmRCallProc, (XtPointer) _XmForegroundColorDefault
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
     XmNbackground, XmCBackground, XmRPixel, 
Packit b099d7
     sizeof (Pixel), XtOffsetOf(WidgetRec, core.background_pixel),
Packit b099d7
     XmRCallProc, (XtPointer) _XmBackgroundColorDefault
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
     XmNtraversalOn, XmCTraversalOn, XmRBoolean, 
Packit b099d7
     sizeof (Boolean), XtOffsetOf(XmPrimitiveRec, primitive.traversal_on),
Packit b099d7
     XmRImmediate, (XtPointer) True
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
     XmNhighlightOnEnter, XmCHighlightOnEnter, XmRBoolean, 
Packit b099d7
     sizeof(Boolean), 
Packit b099d7
     XtOffsetOf(XmPrimitiveRec, primitive.highlight_on_enter),
Packit b099d7
     XmRImmediate, (XtPointer) False
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
     XmNnavigationType, XmCNavigationType, XmRNavigationType, 
Packit b099d7
     sizeof (unsigned char), 
Packit b099d7
     XtOffsetOf(XmPrimitiveRec, primitive.navigation_type),
Packit b099d7
     XmRImmediate, (XtPointer) XmNONE
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
     XmNhighlightThickness, XmCHighlightThickness, XmRHorizontalDimension,
Packit b099d7
     sizeof (Dimension),
Packit b099d7
     XtOffsetOf(XmPrimitiveRec, primitive.highlight_thickness),
Packit b099d7
     XmRCallProc, (XtPointer) _XmSetThickness
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
     XmNhighlightColor, XmCHighlightColor, XmRPixel, 
Packit b099d7
     sizeof (Pixel), XtOffsetOf(XmPrimitiveRec, primitive.highlight_color),
Packit b099d7
     XmRCallProc, (XtPointer) _XmHighlightColorDefault
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
     XmNshadowThickness, XmCShadowThickness, XmRHorizontalDimension,
Packit b099d7
     sizeof (Dimension), 
Packit b099d7
     XtOffsetOf(XmPrimitiveRec, primitive.shadow_thickness),
Packit b099d7
     XmRCallProc, (XtPointer) _XmSetThickness
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
     XmNtopShadowColor, XmCTopShadowColor, XmRPixel, 
Packit b099d7
     sizeof (Pixel),
Packit b099d7
     XtOffsetOf(XmPrimitiveRec, primitive.top_shadow_color),
Packit b099d7
     XmRCallProc, (XtPointer) _XmTopShadowColorDefault
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
     XmNbottomShadowColor, XmCBottomShadowColor, XmRPixel, 
Packit b099d7
     sizeof (Pixel),
Packit b099d7
     XtOffsetOf(XmPrimitiveRec, primitive.bottom_shadow_color),
Packit b099d7
     XmRCallProc, (XtPointer) _XmBottomShadowColorDefault
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
     XmNbackgroundPixmap, XmCPixmap, XmRPixmap, 
Packit b099d7
     sizeof (Pixmap), XtOffsetOf(WidgetRec, core.background_pixmap),
Packit b099d7
     XmRImmediate, (XtPointer) XmUNSPECIFIED_PIXMAP
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
     XmNhighlightPixmap, XmCHighlightPixmap, XmRNoScalingDynamicPixmap,
Packit b099d7
     sizeof (Pixmap), XtOffsetOf(XmPrimitiveRec, primitive.highlight_pixmap),
Packit b099d7
     XmRCallProc, (XtPointer) _XmHighlightPixmapDefault
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
     XmNtopShadowPixmap, XmCTopShadowPixmap, XmRNoScalingDynamicPixmap,
Packit b099d7
     sizeof (Pixmap),
Packit b099d7
     XtOffsetOf(XmPrimitiveRec, primitive.top_shadow_pixmap),
Packit b099d7
     XmRCallProc, (XtPointer) _XmTopShadowPixmapDefault
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
     XmNbottomShadowPixmap, XmCBottomShadowPixmap, XmRNoScalingDynamicPixmap,
Packit b099d7
     sizeof (Pixmap),
Packit b099d7
     XtOffsetOf(XmPrimitiveRec, primitive.bottom_shadow_pixmap),
Packit b099d7
     XmRImmediate, (XtPointer) XmUNSPECIFIED_PIXMAP
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
     XmNhelpCallback, XmCCallback, XmRCallback, 
Packit b099d7
     sizeof(XtCallbackList),
Packit b099d7
     XtOffsetOf(XmPrimitiveRec, primitive.help_callback),
Packit b099d7
     XmRPointer, (XtPointer) NULL
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
     XmNuserData, XmCUserData, XmRPointer, 
Packit b099d7
     sizeof(XtPointer),
Packit b099d7
     XtOffsetOf(XmPrimitiveRec, primitive.user_data),
Packit b099d7
     XmRImmediate, (XtPointer) NULL
Packit b099d7
   },
Packit b099d7
Packit b099d7
#ifndef XM_PART_BC
Packit b099d7
   {
Packit b099d7
     XmNpopupHandlerCallback, XmCCallback, XmRCallback, 
Packit b099d7
     sizeof(XtCallbackList),
Packit b099d7
     XtOffsetOf(XmPrimitiveRec, primitive.popup_handler_callback),
Packit b099d7
     XmRPointer, (XtPointer) NULL
Packit b099d7
   },
Packit b099d7
Packit b099d7
   {
Packit b099d7
      XmNconvertCallback, XmCCallback, XmRCallback, sizeof(XtCallbackList),
Packit b099d7
      XtOffsetOf(XmPrimitiveRec, primitive.convert_callback),
Packit b099d7
      XmRCallback, NULL
Packit b099d7
   },
Packit b099d7
   {
Packit b099d7
     XmNlayoutDirection, XmCLayoutDirection, XmRDirection,
Packit b099d7
     sizeof(XmDirection), 
Packit b099d7
     XtOffsetOf(XmPrimitiveRec, primitive.layout_direction),
Packit b099d7
     XmRCallProc, (XtPointer) _XmDirectionDefault
Packit b099d7
   },
Packit b099d7
#endif
Packit b099d7
};
Packit b099d7
Packit b099d7
#ifdef XM_PART_BC
Packit b099d7
XmDirection XmPrimLayoutDir = XmDEFAULT_DIRECTION ;
Packit b099d7
#endif
Packit b099d7
Packit b099d7
Packit b099d7
/***************************************/
Packit b099d7
/*  Definition for synthetic resources */
Packit b099d7
Packit b099d7
static XmSyntheticResource syn_resources[] =
Packit b099d7
{
Packit b099d7
   { XmNx,
Packit b099d7
     sizeof (Position), XtOffsetOf(WidgetRec, core.x), 
Packit b099d7
     GetXFromShell, XmeToHorizontalPixels },
Packit b099d7
Packit b099d7
   { XmNy, 
Packit b099d7
     sizeof (Position), XtOffsetOf(WidgetRec, core.y), 
Packit b099d7
     GetYFromShell, XmeToVerticalPixels },
Packit b099d7
Packit b099d7
   { XmNwidth,
Packit b099d7
     sizeof (Dimension), XtOffsetOf(WidgetRec, core.width),
Packit b099d7
     XmeFromHorizontalPixels, XmeToHorizontalPixels },
Packit b099d7
Packit b099d7
   { XmNheight,
Packit b099d7
     sizeof (Dimension), XtOffsetOf(WidgetRec, core.height), 
Packit b099d7
     XmeFromVerticalPixels, XmeToVerticalPixels },
Packit b099d7
Packit b099d7
   { XmNborderWidth, 
Packit b099d7
     sizeof (Dimension), XtOffsetOf(WidgetRec, core.border_width), 
Packit b099d7
     XmeFromHorizontalPixels, XmeToHorizontalPixels },
Packit b099d7
Packit b099d7
   { XmNhighlightThickness, 
Packit b099d7
     sizeof (Dimension), 
Packit b099d7
     XtOffsetOf(XmPrimitiveRec, primitive.highlight_thickness), 
Packit b099d7
     XmeFromHorizontalPixels, XmeToHorizontalPixels },
Packit b099d7
Packit b099d7
   { XmNshadowThickness, 
Packit b099d7
     sizeof (Dimension),
Packit b099d7
     XtOffsetOf(XmPrimitiveRec, primitive.shadow_thickness), 
Packit b099d7
     XmeFromHorizontalPixels, XmeToHorizontalPixels },
Packit b099d7
Packit b099d7
   { XmNtoolTipString,
Packit b099d7
     0,
Packit b099d7
     0,
Packit b099d7
     GetToolTipString, SetToolTipString }
Packit b099d7
};
Packit b099d7
Packit b099d7
Packit b099d7
/*******************************************/
Packit b099d7
/*  Declaration of class extension records */
Packit b099d7
Packit b099d7
static XmBaseClassExtRec baseClassExtRec = {
Packit b099d7
    NULL,
Packit b099d7
    NULLQUARK,
Packit b099d7
    XmBaseClassExtVersion,
Packit b099d7
    sizeof(XmBaseClassExtRec),
Packit b099d7
    NULL,				/* InitializePrehook	*/
Packit b099d7
    NULL,				/* SetValuesPrehook	*/
Packit b099d7
    NULL,				/* InitializePosthook	*/
Packit b099d7
    NULL,				/* SetValuesPosthook	*/
Packit b099d7
    NULL,				/* secondaryObjectClass	*/
Packit b099d7
    NULL,				/* secondaryCreate	*/
Packit b099d7
    NULL,		                /* getSecRes data	*/
Packit b099d7
    { 0 },				/* fastSubclass flags	*/
Packit b099d7
    NULL,				/* get_values_prehook	*/
Packit b099d7
    NULL,				/* get_values_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 XmPrimitiveClassExtRec primClassExtRec = {
Packit b099d7
    NULL,
Packit b099d7
    NULLQUARK,
Packit b099d7
    XmPrimitiveClassExtVersion,
Packit b099d7
    sizeof(XmPrimitiveClassExtRec),
Packit b099d7
    NULL,                               /* widget_baseline */
Packit b099d7
    NULL,                               /* widget_display_rect */
Packit b099d7
    NULL                                /* widget_margins */
Packit b099d7
};
Packit b099d7
Packit b099d7
Packit b099d7
/*******************************************/
Packit b099d7
/*  The Primitive class record definition  */
Packit b099d7
Packit b099d7
externaldef(xmprimitiveclassrec) XmPrimitiveClassRec xmPrimitiveClassRec =
Packit b099d7
{
Packit b099d7
   {
Packit b099d7
      (WidgetClass) &widgetClassRec,    /* superclass	         */	
Packit b099d7
      "XmPrimitive",                    /* class_name	         */	
Packit b099d7
      sizeof(XmPrimitiveRec),           /* widget_size	         */	
Packit b099d7
      ClassInitialize,                  /* class_initialize      */    
Packit b099d7
      ClassPartInitialize,              /* class_part_initialize */
Packit b099d7
      False,                            /* class_inited          */	
Packit b099d7
      Initialize,                       /* initialize	         */	
Packit b099d7
      NULL,                             /* initialize_hook       */
Packit b099d7
      Realize,                          /* realize	         */	
Packit b099d7
      actions,                          /* actions               */	
Packit b099d7
      XtNumber(actions),                /* num_actions	         */	
Packit b099d7
      resources,                        /* resources	         */	
Packit b099d7
      XtNumber(resources),              /* num_resources         */	
Packit b099d7
      NULLQUARK,                        /* xrm_class	         */	
Packit b099d7
      True,                             /* compress_motion       */
Packit b099d7
      XtExposeCompressMaximal |		/* compress_exposure     */	
Packit b099d7
	  XtExposeNoRegion,
Packit b099d7
      True,                             /* compress_enterleave   */
Packit b099d7
      False,                            /* visible_interest      */
Packit b099d7
      Destroy,                          /* destroy               */	
Packit b099d7
      NULL,                             /* resize                */	
Packit b099d7
      Redisplay,                        /* expose                */	
Packit b099d7
      SetValues,                        /* set_values	         */	
Packit b099d7
      NULL,                             /* set_values_hook       */
Packit b099d7
      XtInheritSetValuesAlmost,         /* set_values_almost     */
Packit b099d7
      _XmPrimitiveGetValuesHook,        /* 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
      HighlightBorder,		        /* border_highlight   */
Packit b099d7
      UnhighlightBorder,		/* border_unhighlight */
Packit b099d7
      defaultTranslations,		/* translations       */
Packit b099d7
      NULL,				/* arm_and_activate   */
Packit b099d7
      syn_resources,			/* syn resources      */
Packit b099d7
      XtNumber(syn_resources),		/* num_syn_resources  */
Packit b099d7
      (XtPointer)&primClassExtRec,      /* extension        */
Packit b099d7
   }
Packit b099d7
};
Packit b099d7
Packit b099d7
externaldef(xmprimitivewidgetclass) WidgetClass xmPrimitiveWidgetClass = 
Packit b099d7
				     (WidgetClass) &xmPrimitiveClassRec;
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
static XmConst XmSpecifyLayoutDirectionTraitRec primLDT = {
Packit b099d7
  0,			/* version */
Packit b099d7
  GetDirection
Packit b099d7
};
Packit b099d7
Packit b099d7
Packit b099d7
/* Care visual Trait record for Primitive */
Packit b099d7
Packit b099d7
static XmConst XmCareVisualTraitRec primCVT = {
Packit b099d7
    0,		/* version */
Packit b099d7
    Redraw,
Packit b099d7
};
Packit b099d7
Packit b099d7
/* Access Colors Trait record for Primitive */
Packit b099d7
Packit b099d7
static XmConst XmAccessColorsTraitRec primACT = {
Packit b099d7
  0,			/* version */
Packit b099d7
  GetColors
Packit b099d7
};
Packit b099d7
Packit b099d7
/* Unit Type Trait record for Primitive */
Packit b099d7
Packit b099d7
static XmConst XmSpecUnitTypeTraitRec primUTT = {
Packit b099d7
  0,			/* version */
Packit b099d7
  GetUnitType
Packit b099d7
};
Packit b099d7
Packit b099d7
Packit b099d7
/**************************************************************************
Packit b099d7
**
Packit b099d7
** Synthetic resource hooks function section
Packit b099d7
**
Packit b099d7
**************************************************************************/
Packit b099d7
Packit b099d7
static void 
Packit b099d7
GetXFromShell(
Packit b099d7
	 Widget wid,
Packit b099d7
	 int resource_offset,
Packit b099d7
	 XtArgVal *value )
Packit b099d7
{   
Packit b099d7
    /* return the x in the child's unit type; for children of shell, return
Packit b099d7
     ** the parent's x relative to the origin, in pixels
Packit b099d7
     */
Packit b099d7
Packit b099d7
    Position	rootx, rooty;
Packit b099d7
    Widget parent = XtParent(wid);
Packit b099d7
Packit b099d7
    if (XtIsShell(parent))
Packit b099d7
    {   
Packit b099d7
	 XtTranslateCoords( (Widget) wid, 
Packit b099d7
		 (Position) 0, (Position) 0, &rootx, &rooty) ;
Packit b099d7
	 *value = (XtArgVal) rootx;
Packit b099d7
    }
Packit b099d7
    else
Packit b099d7
    {
Packit b099d7
	 *value = (XtArgVal) wid->core.x ;
Packit b099d7
	 XmeFromHorizontalPixels(wid,  resource_offset, value);
Packit b099d7
    }
Packit b099d7
}
Packit b099d7
Packit b099d7
static void 
Packit b099d7
GetYFromShell(
Packit b099d7
	 Widget wid,
Packit b099d7
	 int resource_offset,
Packit b099d7
	 XtArgVal *value )
Packit b099d7
{   
Packit b099d7
    /* return the y in the child's unit type; for children of shell, return
Packit b099d7
     ** the parent's y relative to the origin, in pixels
Packit b099d7
     */
Packit b099d7
Packit b099d7
    Position	rootx, rooty;
Packit b099d7
    Widget parent = XtParent(wid);
Packit b099d7
Packit b099d7
    if (XtIsShell(parent))
Packit b099d7
    {   
Packit b099d7
	 XtTranslateCoords( (Widget) wid, 
Packit b099d7
		 (Position) 0, (Position) 0, &rootx, &rooty) ;
Packit b099d7
	 *value = (XtArgVal) rooty;
Packit b099d7
    }
Packit b099d7
    else
Packit b099d7
    {
Packit b099d7
	 *value = (XtArgVal) wid->core.y ;
Packit b099d7
	 XmeFromVerticalPixels(wid,  resource_offset, value);
Packit b099d7
    }
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
   /* These routines are called for each base classes,
Packit b099d7
	they just returned if it has been done already */
Packit b099d7
   _XmRegisterConverters();
Packit b099d7
   _XmRegisterPixmapConverters();
Packit b099d7
   _XmInitializeExtensions();
Packit b099d7
   _XmInitializeTraits();
Packit b099d7
Packit b099d7
   baseClassExtRec.record_type = XmQmotif;
Packit b099d7
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
/**********************************************************************
Packit b099d7
 *
Packit b099d7
 *  BuildPrimitiveResources
Packit b099d7
 *	Build up the primitive's synthetic resource processing 
Packit b099d7
 *      list by combining the super classes with this class.
Packit b099d7
 *
Packit b099d7
 **********************************************************************/
Packit b099d7
Packit b099d7
static void 
Packit b099d7
BuildPrimitiveResources(
Packit b099d7
	 WidgetClass c )
Packit b099d7
{
Packit b099d7
    XmPrimitiveWidgetClass wc = (XmPrimitiveWidgetClass) c ;
Packit b099d7
    XmPrimitiveWidgetClass sc = (XmPrimitiveWidgetClass) 
Packit b099d7
	 wc->core_class.superclass;
Packit b099d7
Packit b099d7
    _XmInitializeSyntheticResources(wc->primitive_class.syn_resources,
Packit b099d7
				    wc->primitive_class.num_syn_resources);
Packit b099d7
Packit b099d7
    if (sc == (XmPrimitiveWidgetClass) widgetClass) return;
Packit b099d7
Packit b099d7
    _XmBuildResources (&(wc->primitive_class.syn_resources),
Packit b099d7
			&(wc->primitive_class.num_syn_resources),
Packit b099d7
			sc->primitive_class.syn_resources,
Packit b099d7
			sc->primitive_class.num_syn_resources);
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
/************************************************************************
Packit b099d7
 *
Packit b099d7
 *  ClassPartInitialize
Packit b099d7
 *    Set up the inheritance mechanism for the routines exported by
Packit b099d7
 *    primitives class part.
Packit b099d7
 *
Packit b099d7
 ************************************************************************/
Packit b099d7
static void 
Packit b099d7
ClassPartInitialize(
Packit b099d7
	 WidgetClass w )
Packit b099d7
{
Packit b099d7
    static Boolean first_time = TRUE;
Packit b099d7
    XmPrimitiveWidgetClass wc = (XmPrimitiveWidgetClass) w;
Packit b099d7
    XmPrimitiveWidgetClass super =
Packit b099d7
	(XmPrimitiveWidgetClass) wc->core_class.superclass;
Packit b099d7
    XmPrimitiveClassExt              *wcePtr, *scePtr;
Packit b099d7
    
Packit b099d7
Packit b099d7
    _XmFastSubclassInit (w, XmPRIMITIVE_BIT);
Packit b099d7
    
Packit b099d7
    /*** first deal with inheritance of regular class method */
Packit b099d7
    
Packit b099d7
    if (wc->primitive_class.border_highlight == XmInheritWidgetProc)
Packit b099d7
	wc->primitive_class.border_highlight =
Packit b099d7
	    super->primitive_class.border_highlight;
Packit b099d7
    
Packit b099d7
    if (wc->primitive_class.border_unhighlight == XmInheritWidgetProc)
Packit b099d7
	wc->primitive_class.border_unhighlight =
Packit b099d7
	    super->primitive_class.border_unhighlight;
Packit b099d7
    
Packit b099d7
    if (wc->primitive_class.translations == XtInheritTranslations)
Packit b099d7
	wc->primitive_class.translations = 
Packit b099d7
	    super->primitive_class.translations;
Packit b099d7
    else if (wc->primitive_class.translations)
Packit b099d7
	wc->primitive_class.translations = (String)
Packit b099d7
	    XtParseTranslationTable(wc->primitive_class.translations);
Packit b099d7
    
Packit b099d7
    if (wc->primitive_class.arm_and_activate == XmInheritArmAndActivate)
Packit b099d7
        wc->primitive_class.arm_and_activate =
Packit b099d7
	    super->primitive_class.arm_and_activate;
Packit b099d7
    
Packit b099d7
    /* synthetic resource management */
Packit b099d7
    BuildPrimitiveResources((WidgetClass) wc);
Packit b099d7
    
Packit b099d7
    /*** then look at the extension.
Packit b099d7
      if it's NULL, create a new one with inherit everywhere,
Packit b099d7
      then do the inheritance. */
Packit b099d7
    
Packit b099d7
    wcePtr = _XmGetPrimitiveClassExtPtr(wc, NULLQUARK);
Packit b099d7
    
Packit b099d7
    if (*wcePtr == NULL) {
Packit b099d7
	*wcePtr = (XmPrimitiveClassExt) XtCalloc(1, 
Packit b099d7
					 sizeof(XmPrimitiveClassExtRec)) ;
Packit b099d7
	(*wcePtr)->next_extension = NULL;
Packit b099d7
	(*wcePtr)->record_type 	= NULLQUARK;
Packit b099d7
	(*wcePtr)->version	= XmPrimitiveClassExtVersion ;
Packit b099d7
	(*wcePtr)->record_size	= sizeof(XmPrimitiveClassExtRec);
Packit b099d7
	(*wcePtr)->widget_baseline = XmInheritBaselineProc;
Packit b099d7
	(*wcePtr)->widget_display_rect  = XmInheritDisplayRectProc ;
Packit b099d7
	(*wcePtr)->widget_margins = XmInheritMarginsProc ;
Packit b099d7
    }
Packit b099d7
    
Packit b099d7
    if ((WidgetClass)wc != xmPrimitiveWidgetClass) {
Packit b099d7
	
Packit b099d7
	scePtr = _XmGetPrimitiveClassExtPtr(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
    /*** Carry this ugly non portable code that deal with Xt internals.
Packit b099d7
       Maintain first_time because we want to do that only once 
Packit b099d7
       Object ClassPartInit has been called */
Packit b099d7
    if (first_time) {
Packit b099d7
        _XmReOrderResourceList(xmPrimitiveWidgetClass, XmNunitType, NULL);
Packit b099d7
        _XmReOrderResourceList(xmPrimitiveWidgetClass, 
Packit b099d7
			       XmNforeground, XmNbackground);
Packit b099d7
        first_time = FALSE;
Packit b099d7
    }
Packit b099d7
    
Packit b099d7
    
Packit b099d7
    
Packit b099d7
    /*** setting up traits for all subclasses as well.*/
Packit b099d7
Packit b099d7
    XmeTraitSet((XtPointer)wc, XmQTspecifyLayoutDirection,(XtPointer)&primLDT);
Packit b099d7
    XmeTraitSet((XtPointer)wc, XmQTcareParentVisual, (XtPointer)&primCVT);
Packit b099d7
    XmeTraitSet((XtPointer)wc, XmQTaccessColors, (XtPointer)&primACT);
Packit b099d7
    XmeTraitSet((XtPointer)wc, XmQTspecifyUnitType, (XtPointer)&primUTT);
Packit b099d7
}
Packit b099d7
Packit b099d7
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
    XmPrimitiveWidget request = (XmPrimitiveWidget) rw ;
Packit b099d7
    XmPrimitiveWidget pw = (XmPrimitiveWidget) nw ;
Packit b099d7
    XtTranslations translations ;
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
    _XmProcessLock();
Packit b099d7
    translations = (XtTranslations) ((XmPrimitiveClassRec *) XtClass( pw))
Packit b099d7
	->primitive_class.translations ;
Packit b099d7
    _XmProcessUnlock();
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, (XmString) tool_tip_string);
Packit b099d7
Packit b099d7
    if(    pw->primitive.traversal_on
Packit b099d7
       && translations  &&  pw->core.tm.translations
Packit b099d7
       && !XmIsLabel( pw)    )
Packit b099d7
	{   
Packit b099d7
	    /*  If this widget is requesting traversal then augment its
Packit b099d7
	     * translation table with some additional events.
Packit b099d7
	     * We will only augment translations for a widget which
Packit b099d7
	     * already has some translations defined; this allows widgets
Packit b099d7
	     * which want to set different translations (i.e. menus) to
Packit b099d7
	     * it at a later point in time.
Packit b099d7
	     * We do not override RowColumn and Label subclasses, these
Packit b099d7
	     * are handled by those classes.
Packit b099d7
	     */
Packit b099d7
	    XtOverrideTranslations( (Widget) pw, translations) ;
Packit b099d7
	} 
Packit b099d7
    
Packit b099d7
    pw->primitive.have_traversal = FALSE ;
Packit b099d7
    pw->primitive.highlighted = FALSE ;
Packit b099d7
    pw->primitive.highlight_drawn = FALSE ;
Packit b099d7
    
Packit b099d7
    if((pw->primitive.navigation_type != XmDYNAMIC_DEFAULT_TAB_GROUP)
Packit b099d7
       && !XmRepTypeValidValue(XmRID_NAVIGATION_TYPE, 
Packit b099d7
                               pw->primitive.navigation_type, 
Packit b099d7
			       (Widget) pw))
Packit b099d7
	{   pw->primitive.navigation_type = XmNONE ;
Packit b099d7
	} 
Packit b099d7
    _XmNavigInitialize( (Widget) request, (Widget) pw, args, num_args);
Packit b099d7
    
Packit b099d7
    if(    !XmRepTypeValidValue( XmRID_UNIT_TYPE,
Packit b099d7
				pw->primitive.unit_type, (Widget) pw)    )
Packit b099d7
	{
Packit b099d7
	    pw->primitive.unit_type = XmPIXELS;
Packit b099d7
	}
Packit b099d7
    
Packit b099d7
    
Packit b099d7
    /*  Convert the fields from unit values to pixel values  */
Packit b099d7
    
Packit b099d7
    _XmPrimitiveImportArgs( (Widget) pw, args, num_args);
Packit b099d7
    
Packit b099d7
    /*  Check the geometry information for the widget  */
Packit b099d7
    
Packit b099d7
    if (request->core.width == 0)
Packit b099d7
	pw->core.width += pw->primitive.highlight_thickness * 2 +
Packit b099d7
	    pw->primitive.shadow_thickness * 2;
Packit b099d7
    
Packit b099d7
    if (request->core.height == 0)
Packit b099d7
	pw->core.height += pw->primitive.highlight_thickness * 2 + 
Packit b099d7
	    pw->primitive.shadow_thickness * 2;
Packit b099d7
    
Packit b099d7
    /*  Get the graphics contexts for the border drawing  */
Packit b099d7
    
Packit b099d7
    pw->primitive.highlight_GC = 
Packit b099d7
	_XmGetPixmapBasedGC (nw, 
Packit b099d7
			     pw->primitive.highlight_color,
Packit b099d7
			     pw->core.background_pixel,
Packit b099d7
			     pw->primitive.highlight_pixmap);
Packit b099d7
    pw->primitive.top_shadow_GC = 
Packit b099d7
	_XmGetPixmapBasedGC (nw, 
Packit b099d7
			     pw->primitive.top_shadow_color,
Packit b099d7
			     pw->core.background_pixel,
Packit b099d7
			     pw->primitive.top_shadow_pixmap);
Packit b099d7
    pw->primitive.bottom_shadow_GC = 
Packit b099d7
	_XmGetPixmapBasedGC (nw, 
Packit b099d7
			     pw->primitive.bottom_shadow_color,
Packit b099d7
			     pw->core.background_pixel,
Packit b099d7
			     pw->primitive.bottom_shadow_pixmap);
Packit b099d7
    
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
/************************************************************************
Packit b099d7
 *
Packit b099d7
 *  Realize
Packit b099d7
 *	General realize procedure for primitive widgets.  Lets the bit
Packit b099d7
 *	gravity default to Forget.
Packit b099d7
 *
Packit b099d7
 ************************************************************************/
Packit b099d7
static void 
Packit b099d7
Realize(
Packit b099d7
        register Widget w,
Packit b099d7
        XtValueMask *p_valueMask,
Packit b099d7
        XSetWindowAttributes *attributes )
Packit b099d7
{
Packit b099d7
   Mask valueMask = *p_valueMask;
Packit b099d7
Packit b099d7
   valueMask |= CWDontPropagate;
Packit b099d7
   attributes->do_not_propagate_mask =
Packit b099d7
      ButtonPressMask | ButtonReleaseMask |
Packit b099d7
      KeyPressMask | KeyReleaseMask | PointerMotionMask;
Packit b099d7
        
Packit b099d7
   XtCreateWindow (w, InputOutput, CopyFromParent, valueMask, attributes);
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
/************************************************************************
Packit b099d7
 *
Packit b099d7
 *  Redisplay
Packit b099d7
 *     General redisplay function called on exposure events.
Packit b099d7
 *
Packit b099d7
 ************************************************************************/
Packit b099d7
/* ARGSUSED */
Packit b099d7
static void 
Packit b099d7
Redisplay(
Packit b099d7
        Widget wid,
Packit b099d7
        XEvent *event,
Packit b099d7
        Region region )
Packit b099d7
{
Packit b099d7
    XmPrimitiveWidget pw = (XmPrimitiveWidget) wid ;
Packit b099d7
Packit b099d7
    if (pw->primitive.highlighted) {   
Packit b099d7
	(*(((XmPrimitiveWidgetClass) XtClass(wid))
Packit b099d7
	   ->primitive_class.border_highlight))(wid) ;
Packit b099d7
    } else {   
Packit b099d7
	(*(((XmPrimitiveWidgetClass) XtClass(wid))
Packit b099d7
	   ->primitive_class.border_unhighlight))(wid) ;
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
   XmPrimitiveWidget pw = (XmPrimitiveWidget) 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
   XtReleaseGC( w, pw->primitive.top_shadow_GC);
Packit b099d7
   XtReleaseGC( w, pw->primitive.bottom_shadow_GC);
Packit b099d7
   XtReleaseGC( w, pw->primitive.highlight_GC);
Packit b099d7
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 current,
Packit b099d7
        Widget request,
Packit b099d7
        Widget new_w,
Packit b099d7
        ArgList args,
Packit b099d7
        Cardinal *num_args )
Packit b099d7
{
Packit b099d7
   XmPrimitiveWidget curpw = (XmPrimitiveWidget) current;
Packit b099d7
   XmPrimitiveWidget newpw = (XmPrimitiveWidget) new_w;
Packit b099d7
   Boolean returnFlag = False;
Packit b099d7
Packit b099d7
    if (XtIsSensitive(current) != XtIsSensitive(new_w))
Packit b099d7
    {
Packit b099d7
    	if (!XtIsSensitive(new_w))
Packit b099d7
    	{
Packit b099d7
	    _XmToolTipLeave(new_w, NULL, NULL, NULL);
Packit b099d7
    	}
Packit b099d7
    }
Packit b099d7
Packit b099d7
    if (XmGetToolTipString(new_w) != XmGetToolTipString(current))
Packit b099d7
    {
Packit b099d7
        XmSetToolTipString(current, XmGetToolTipString (new_w));
Packit b099d7
    }
Packit b099d7
Packit b099d7
   /* CR 7124: XmNlayoutDirection is a CG resource. */
Packit b099d7
   if (XmPrim_layout_direction(curpw) != XmPrim_layout_direction(newpw))
Packit b099d7
     {
Packit b099d7
       XmeWarning(new_w, MESSAGE1);
Packit b099d7
       XmPrim_layout_direction(newpw) = XmPrim_layout_direction(curpw);
Packit b099d7
     }
Packit b099d7
Packit b099d7
   if(    newpw->primitive.traversal_on
Packit b099d7
       && (newpw->primitive.traversal_on != curpw->primitive.traversal_on)
Packit b099d7
       && newpw->core.tm.translations
Packit b099d7
       && ((XmPrimitiveClassRec *) XtClass( newpw))
Packit b099d7
                                            ->primitive_class.translations
Packit b099d7
       && !XmIsLabel(newpw)    ) {
Packit b099d7
       _XmProcessLock();
Packit b099d7
       XtOverrideTranslations( (Widget) newpw, (XtTranslations) 
Packit b099d7
			      ((XmPrimitiveClassRec *) XtClass( newpw))
Packit b099d7
			      ->primitive_class.translations) ;
Packit b099d7
       _XmProcessUnlock();
Packit b099d7
       }
Packit b099d7
   if(    curpw->primitive.navigation_type
Packit b099d7
      != newpw->primitive.navigation_type    )
Packit b099d7
     {
Packit b099d7
	 if(    !XmRepTypeValidValue( XmRID_NAVIGATION_TYPE, 
Packit b099d7
				     newpw->primitive.navigation_type, 
Packit b099d7
				     (Widget) newpw)    )
Packit b099d7
	 {
Packit b099d7
	     newpw->primitive.navigation_type
Packit b099d7
		 = curpw->primitive.navigation_type ;
Packit b099d7
	 } 
Packit b099d7
     }
Packit b099d7
   returnFlag = _XmNavigSetValues( current, request, new_w, args, num_args);
Packit b099d7
Packit b099d7
   /*  Validate changed data.  */
Packit b099d7
Packit b099d7
   if(    !XmRepTypeValidValue( XmRID_UNIT_TYPE,
Packit b099d7
                               newpw->primitive.unit_type, 
Packit b099d7
			       (Widget) newpw)    )
Packit b099d7
       {
Packit b099d7
       newpw->primitive.unit_type = curpw->primitive.unit_type;
Packit b099d7
   }
Packit b099d7
Packit b099d7
Packit b099d7
   /*  Convert the necessary fields from unit values to pixel values  */
Packit b099d7
Packit b099d7
   _XmPrimitiveImportArgs( (Widget) newpw, args, num_args);
Packit b099d7
Packit b099d7
   /*  Check for resize conditions  */
Packit b099d7
Packit b099d7
   if (curpw->primitive.shadow_thickness !=
Packit b099d7
       newpw->primitive.shadow_thickness ||
Packit b099d7
       curpw->primitive.highlight_thickness !=
Packit b099d7
       newpw->primitive.highlight_thickness)
Packit b099d7
      returnFlag = True;
Packit b099d7
Packit b099d7
   if (curpw->primitive.highlight_color != newpw->primitive.highlight_color ||
Packit b099d7
       curpw->primitive.highlight_pixmap != newpw->primitive.highlight_pixmap)
Packit b099d7
   {
Packit b099d7
       XtReleaseGC ((Widget) newpw, newpw->primitive.highlight_GC);
Packit b099d7
       newpw->primitive.highlight_GC = 
Packit b099d7
	   _XmGetPixmapBasedGC (new_w, 
Packit b099d7
				newpw->primitive.highlight_color,
Packit b099d7
				newpw->core.background_pixel,
Packit b099d7
				newpw->primitive.highlight_pixmap);
Packit b099d7
       returnFlag = True;
Packit b099d7
   }
Packit b099d7
Packit b099d7
   if (curpw->primitive.top_shadow_color != 
Packit b099d7
       newpw->primitive.top_shadow_color ||
Packit b099d7
       curpw->primitive.top_shadow_pixmap != 
Packit b099d7
       newpw->primitive.top_shadow_pixmap)
Packit b099d7
       {
Packit b099d7
       XtReleaseGC ((Widget) newpw, newpw->primitive.top_shadow_GC);
Packit b099d7
       newpw->primitive.top_shadow_GC = 
Packit b099d7
	   _XmGetPixmapBasedGC (new_w, 
Packit b099d7
				newpw->primitive.top_shadow_color,
Packit b099d7
				newpw->core.background_pixel,
Packit b099d7
				newpw->primitive.top_shadow_pixmap);
Packit b099d7
       returnFlag = True;
Packit b099d7
   }
Packit b099d7
   
Packit b099d7
   if (curpw->primitive.bottom_shadow_color != 
Packit b099d7
       newpw->primitive.bottom_shadow_color ||
Packit b099d7
       curpw->primitive.bottom_shadow_pixmap != 
Packit b099d7
       newpw->primitive.bottom_shadow_pixmap)
Packit b099d7
   {
Packit b099d7
      XtReleaseGC( (Widget) newpw, newpw->primitive.bottom_shadow_GC);
Packit b099d7
      newpw->primitive.bottom_shadow_GC = 
Packit b099d7
	  _XmGetPixmapBasedGC (new_w, 
Packit b099d7
			       newpw->primitive.bottom_shadow_color,
Packit b099d7
			       newpw->core.background_pixel,
Packit b099d7
			       newpw->primitive.bottom_shadow_pixmap);
Packit b099d7
      returnFlag = True;
Packit b099d7
   }
Packit b099d7
Packit b099d7
   if(    newpw->primitive.highlight_drawn
Packit b099d7
      &&  (    !XtIsSensitive( (Widget) newpw)
Packit b099d7
	   ||  (    (curpw->primitive.highlight_on_enter)
Packit b099d7
		&&  !(newpw->primitive.highlight_on_enter)
Packit b099d7
		&&  (_XmGetFocusPolicy( (Widget) newpw) == XmPOINTER)))    )
Packit b099d7
     {
Packit b099d7
       if(    ((XmPrimitiveWidgetClass) XtClass( newpw))
Packit b099d7
	  ->primitive_class.border_unhighlight    )
Packit b099d7
	 {
Packit b099d7
	     (*(((XmPrimitiveWidgetClass) XtClass( newpw))
Packit b099d7
		->primitive_class.border_unhighlight))( (Widget) newpw) ;
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
 *  HighlightBorder
Packit b099d7
 *
Packit b099d7
 ************************************************************************/
Packit b099d7
static void 
Packit b099d7
HighlightBorder(
Packit b099d7
        Widget w )
Packit b099d7
{   
Packit b099d7
    XmPrimitiveWidget pw = (XmPrimitiveWidget) w ;
Packit b099d7
Packit b099d7
    pw->primitive.highlighted = True ;
Packit b099d7
    pw->primitive.highlight_drawn = True ;
Packit b099d7
Packit b099d7
    if(XtWidth( pw) == 0 || XtHeight( pw) == 0
Packit b099d7
       || pw->primitive.highlight_thickness == 0) return ;
Packit b099d7
Packit b099d7
Packit b099d7
    XmeDrawHighlight( XtDisplay( pw), XtWindow( pw), 
Packit b099d7
		     pw->primitive.highlight_GC, 0, 0, 
Packit b099d7
		     XtWidth( pw), XtHeight( pw),
Packit b099d7
		     pw->primitive.highlight_thickness) ;
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
/************************************************************************
Packit b099d7
 *
Packit b099d7
 *  UnhighlightBorder
Packit b099d7
 *
Packit b099d7
 ************************************************************************/
Packit b099d7
static void 
Packit b099d7
UnhighlightBorder(
Packit b099d7
        Widget w )
Packit b099d7
{   
Packit b099d7
    XmPrimitiveWidget pw = (XmPrimitiveWidget) w ;
Packit b099d7
    XmSpecifyUnhighlightTrait UnhighlightT;
Packit b099d7
    GC manager_background_GC;
Packit b099d7
Packit b099d7
    pw->primitive.highlighted = False ;
Packit b099d7
    pw->primitive.highlight_drawn = False ;
Packit b099d7
Packit b099d7
    if ( XtWidth( w) == 0
Packit b099d7
	|| XtHeight( w) == 0
Packit b099d7
        || pw->primitive.highlight_thickness == 0) 
Packit b099d7
	{
Packit b099d7
	return ;
Packit b099d7
	}
Packit b099d7
Packit b099d7
Packit b099d7
    if(XmIsManager( pw->core.parent))
Packit b099d7
	{
Packit b099d7
	/* If unhighlight trait in parent use specified GC */
Packit b099d7
	if (((UnhighlightT=(XmSpecifyUnhighlightTrait)XmeTraitGet((XtPointer)
Packit b099d7
		XtClass(pw->core.parent), XmQTspecifyUnhighlight)) != NULL)
Packit b099d7
	    && (UnhighlightT->getUnhighlightGC != NULL))
Packit b099d7
	    {
Packit b099d7
	    manager_background_GC = 
Packit b099d7
			    UnhighlightT->getUnhighlightGC( pw->core.parent, w);
Packit b099d7
	    }
Packit b099d7
	/* otherwise, use parent's background GC */
Packit b099d7
	else
Packit b099d7
	    {
Packit b099d7
	    manager_background_GC = ((XmManagerWidget)(pw->core.parent))
Packit b099d7
			    ->manager.background_GC;
Packit b099d7
	    }
Packit b099d7
	XmeDrawHighlight( XtDisplay( pw), XtWindow( pw), 
Packit b099d7
			    manager_background_GC,
Packit b099d7
			    0, 0, XtWidth( w), XtHeight( w),
Packit b099d7
			    pw->primitive.highlight_thickness) ;
Packit b099d7
	}
Packit b099d7
    else 
Packit b099d7
	XmeClearBorder( XtDisplay (pw), XtWindow (pw), 0, 0, XtWidth( w),
Packit b099d7
		       XtHeight( w) , pw->primitive.highlight_thickness) ;
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
/************************************************************************
Packit b099d7
 *
Packit b099d7
 *  WidgetNavigable
Packit b099d7
 *
Packit b099d7
 ************************************************************************/
Packit b099d7
static XmNavigability
Packit b099d7
WidgetNavigable(
Packit b099d7
        Widget wid)
Packit b099d7
{   
Packit b099d7
    if(    XtIsSensitive(wid)
Packit b099d7
       &&  ((XmPrimitiveWidget) wid)->primitive.traversal_on    )
Packit b099d7
	{   
Packit b099d7
	    XmNavigationType nav_type = ((XmPrimitiveWidget) wid)
Packit b099d7
		->primitive.navigation_type ;
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
 *
Packit b099d7
 *  FocusChange
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(!(((XmPrimitiveWidget) wid)->primitive.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
		((XmPrimitiveWidget) wid)->primitive.have_traversal = TRUE ;
Packit b099d7
	    }
Packit b099d7
	    if(    ((XmPrimitiveWidgetClass) XtClass( wid))
Packit b099d7
	       ->primitive_class.border_highlight    )
Packit b099d7
		{   
Packit b099d7
		    (*(((XmPrimitiveWidgetClass) XtClass( wid))
Packit b099d7
		       ->primitive_class.border_highlight))( wid) ;
Packit b099d7
		} 
Packit b099d7
	    break ;
Packit b099d7
	case XmLEAVE:
Packit b099d7
	    if(!(((XmPrimitiveWidget) wid)->primitive.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
		((XmPrimitiveWidget) wid)->primitive.have_traversal = FALSE ;
Packit b099d7
	    }
Packit b099d7
	    if(    ((XmPrimitiveWidgetClass) XtClass( wid))
Packit b099d7
	       ->primitive_class.border_unhighlight    )
Packit b099d7
		{   
Packit b099d7
		    (*(((XmPrimitiveWidgetClass) XtClass( wid))
Packit b099d7
		       ->primitive_class.border_unhighlight))( wid) ;
Packit b099d7
		} 
Packit b099d7
	    break ;
Packit b099d7
	}
Packit b099d7
    return ;
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
/****************************************/
Packit b099d7
/******------ trait methods -------******/
Packit b099d7
/****************************************/
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
static XmDirection 
Packit b099d7
GetDirection(Widget w)
Packit b099d7
{
Packit b099d7
  return XmPrim_layout_direction(((XmPrimitiveWidget)(w)));
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
/*ARGSUSED*/
Packit b099d7
static Boolean 
Packit b099d7
Redraw (
Packit b099d7
	Widget kid, 	       
Packit b099d7
	Widget cur_parent,	/* unused */
Packit b099d7
	Widget new_parent,	/* unused */
Packit b099d7
	Mask visual_flag)
Packit b099d7
{
Packit b099d7
    XmPrimitiveWidget pw = (XmPrimitiveWidget) kid ;
Packit b099d7
Packit b099d7
    /* primitive only cares about background info */
Packit b099d7
    /* Menu buttons "redefine" unhighlight on a per instance basis,
Packit b099d7
       so they'll get this trait method anyway and do nothing
Packit b099d7
       in their unhighlight method on a per instance basis */
Packit b099d7
    /* Separators, Lists, have a null unhighlight, so they'll be caught
Packit b099d7
       here, they could redefine the trait, kindof uninstall it... */
Packit b099d7
Packit b099d7
    if (visual_flag & (VisualBackgroundPixel|VisualBackgroundPixmap)) {
Packit b099d7
	/* do the unhighlight if necessary, using class method */
Packit b099d7
	/* parent manager background gc already set up */
Packit b099d7
	if (!pw->primitive.highlighted) {
Packit b099d7
            XmPrimitiveClassRec* kid_class = (XmPrimitiveClassRec*) XtClass(kid);
Packit b099d7
Packit b099d7
	    if (! XtIsRealized(kid)) return True;
Packit b099d7
Packit b099d7
	    if (kid_class->primitive_class.border_unhighlight)
Packit b099d7
	      kid_class-> primitive_class.border_unhighlight(kid);
Packit b099d7
	}
Packit b099d7
    }
Packit b099d7
Packit b099d7
    return False ;
Packit b099d7
}
Packit b099d7
Packit b099d7
static void
Packit b099d7
GetColors(Widget w, 
Packit b099d7
	  XmAccessColorData color_data)
Packit b099d7
{
Packit b099d7
    XmPrimitiveWidget pw = (XmPrimitiveWidget) w ;
Packit b099d7
Packit b099d7
    color_data->valueMask = AccessForeground | AccessBackgroundPixel |
Packit b099d7
	AccessHighlightColor | AccessTopShadowColor | AccessBottomShadowColor;
Packit b099d7
    color_data->background = pw->core.background_pixel;
Packit b099d7
    color_data->foreground = pw->primitive.foreground;
Packit b099d7
    color_data->highlight_color = pw->primitive.highlight_color;
Packit b099d7
    color_data->top_shadow_color = pw->primitive.top_shadow_color;
Packit b099d7
    color_data->bottom_shadow_color = pw->primitive.bottom_shadow_color;
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
static unsigned char
Packit b099d7
GetUnitType(Widget w)
Packit b099d7
{
Packit b099d7
    return ((XmPrimitiveWidget) w)->primitive.unit_type ;
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
/****************************************************************
Packit b099d7
 ****************************************************************
Packit b099d7
 **
Packit b099d7
 ** External functions, both _Xm and Xm.
Packit b099d7
 ** First come the action procs and then the other external entry points.
Packit b099d7
 **
Packit b099d7
 ****************************************************************
Packit b099d7
 ****************************************************************/
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
/************************************************************************
Packit b099d7
 *
Packit b099d7
 *  The traversal event processing routines.
Packit b099d7
 *    The following set of routines are the entry points invoked from
Packit b099d7
 *    each primitive widget when one of the traversal event conditions
Packit b099d7
 *    occur.  These routines are externed in XmP.h.
Packit b099d7
 *
Packit b099d7
 ************************************************************************/
Packit b099d7
/*ARGSUSED*/
Packit b099d7
void 
Packit b099d7
_XmTraverseLeft(
Packit b099d7
        Widget w,
Packit b099d7
        XEvent *event,		/* unused */
Packit b099d7
        String *params,		/* unused */
Packit b099d7
        Cardinal *num_params )	/* unused */
Packit b099d7
{
Packit b099d7
  _XmMgrTraversal(w, XmTRAVERSE_LEFT);
Packit b099d7
}
Packit b099d7
Packit b099d7
/*ARGSUSED*/
Packit b099d7
void 
Packit b099d7
_XmTraverseRight(
Packit b099d7
        Widget w,
Packit b099d7
        XEvent *event,		/* unused */
Packit b099d7
        String *params,		/* unused */
Packit b099d7
        Cardinal *num_params )	/* unused */
Packit b099d7
{
Packit b099d7
   _XmMgrTraversal (w, XmTRAVERSE_RIGHT);
Packit b099d7
}
Packit b099d7
Packit b099d7
/*ARGSUSED*/
Packit b099d7
void 
Packit b099d7
_XmTraverseUp(
Packit b099d7
        Widget w,
Packit b099d7
        XEvent *event,		/* unused */
Packit b099d7
        String *params,		/* unused */
Packit b099d7
        Cardinal *num_params )	/* unused */
Packit b099d7
{
Packit b099d7
   _XmMgrTraversal (w, XmTRAVERSE_UP);
Packit b099d7
}
Packit b099d7
Packit b099d7
/*ARGSUSED*/
Packit b099d7
void 
Packit b099d7
_XmTraverseDown(
Packit b099d7
        Widget w,
Packit b099d7
        XEvent *event,		/* unused */
Packit b099d7
        String *params,		/* unused */
Packit b099d7
        Cardinal *num_params )	/* unused */
Packit b099d7
{
Packit b099d7
   _XmMgrTraversal (w, XmTRAVERSE_DOWN);
Packit b099d7
}
Packit b099d7
Packit b099d7
/*ARGSUSED*/
Packit b099d7
void 
Packit b099d7
_XmTraverseNext(
Packit b099d7
        Widget w,
Packit b099d7
        XEvent *event,		/* unused */
Packit b099d7
        String *params,		/* unused */
Packit b099d7
        Cardinal *num_params )	/* unused */
Packit b099d7
{
Packit b099d7
   _XmMgrTraversal (w, XmTRAVERSE_NEXT);
Packit b099d7
}
Packit b099d7
Packit b099d7
/*ARGSUSED*/
Packit b099d7
void 
Packit b099d7
_XmTraversePrev(
Packit b099d7
        Widget w,
Packit b099d7
        XEvent *event,		/* unused */
Packit b099d7
        String *params,		/* unused */
Packit b099d7
        Cardinal *num_params )	/* unused */
Packit b099d7
{
Packit b099d7
   _XmMgrTraversal (w, XmTRAVERSE_PREV);
Packit b099d7
}
Packit b099d7
Packit b099d7
/*ARGSUSED*/
Packit b099d7
void 
Packit b099d7
_XmTraverseHome(
Packit b099d7
        Widget w,
Packit b099d7
        XEvent *event,		/* unused */
Packit b099d7
        String *params,		/* unused */
Packit b099d7
        Cardinal *num_params )	/* unused */
Packit b099d7
{
Packit b099d7
   _XmMgrTraversal (w, XmTRAVERSE_HOME);
Packit b099d7
}
Packit b099d7
Packit b099d7
/*ARGSUSED*/
Packit b099d7
void 
Packit b099d7
_XmTraverseNextTabGroup(
Packit b099d7
        Widget w,
Packit b099d7
        XEvent *event,		/* unused */
Packit b099d7
        String *params,		/* unused */
Packit b099d7
        Cardinal *num_params )	/* unused */
Packit b099d7
{
Packit b099d7
  XmDisplay xm_dpy = (XmDisplay) XmGetXmDisplay(XtDisplay(w));
Packit b099d7
  Boolean button_tab = xm_dpy->display.enable_button_tab;
Packit b099d7
Packit b099d7
  if (button_tab)
Packit b099d7
    _XmMgrTraversal(w, XmTRAVERSE_GLOBALLY_FORWARD);
Packit b099d7
  else
Packit b099d7
    _XmMgrTraversal(w, XmTRAVERSE_NEXT_TAB_GROUP);
Packit b099d7
}
Packit b099d7
Packit b099d7
/*ARGSUSED*/
Packit b099d7
void 
Packit b099d7
_XmTraversePrevTabGroup(
Packit b099d7
        Widget w,
Packit b099d7
        XEvent *event,		/* unused */
Packit b099d7
        String *params,		/* unused */
Packit b099d7
        Cardinal *num_params )	/* unused */
Packit b099d7
{
Packit b099d7
  XmDisplay xm_dpy = (XmDisplay) XmGetXmDisplay(XtDisplay(w));
Packit b099d7
  Boolean button_tab = xm_dpy->display.enable_button_tab;
Packit b099d7
Packit b099d7
  if (button_tab)
Packit b099d7
    _XmMgrTraversal(w, XmTRAVERSE_GLOBALLY_BACKWARD);
Packit b099d7
  else
Packit b099d7
    _XmMgrTraversal(w, XmTRAVERSE_PREV_TAB_GROUP);
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
/*ARGSUSED*/
Packit b099d7
void 
Packit b099d7
_XmPrimitiveHelp(
Packit b099d7
        Widget wid,
Packit b099d7
        XEvent *event,
Packit b099d7
        String *params,		/* unused */
Packit b099d7
        Cardinal *num_params )	/* unused */
Packit b099d7
{
Packit b099d7
   if (!_XmIsEventUnique(event))
Packit b099d7
      return;
Packit b099d7
Packit b099d7
   _XmSocorro( wid, event, NULL, NULL);
Packit b099d7
   
Packit b099d7
   _XmRecordEvent(event);
Packit b099d7
}
Packit b099d7
Packit b099d7
Packit b099d7
Packit b099d7
void 
Packit b099d7
_XmPrimitiveParentActivate( 
Packit b099d7
        Widget pw,
Packit b099d7
        XEvent *event,
Packit b099d7
        String *params,
Packit b099d7
        Cardinal *num_params )
Packit b099d7
{   
Packit b099d7
    XmParentInputActionRec  pp_data ;
Packit b099d7
Packit b099d7
    pp_data.process_type = XmINPUT_ACTION ;
Packit b099d7
    pp_data.action = XmPARENT_ACTIVATE ;
Packit b099d7
    pp_data.event = event ;
Packit b099d7
    pp_data.params = params ;
Packit b099d7
    pp_data.num_params = num_params ;
Packit b099d7
Packit b099d7
    _XmParentProcess( XtParent( pw), (XmParentProcessData) &pp_data) ;
Packit b099d7
}
Packit b099d7
Packit b099d7
void 
Packit b099d7
_XmPrimitiveParentCancel( 
Packit b099d7
        Widget pw,
Packit b099d7
        XEvent *event,
Packit b099d7
        String *params,
Packit b099d7
        Cardinal *num_params )
Packit b099d7
{   
Packit b099d7
    XmParentInputActionRec  pp_data ;
Packit b099d7
Packit b099d7
    pp_data.process_type = XmINPUT_ACTION ;
Packit b099d7
    pp_data.action = XmPARENT_CANCEL ;
Packit b099d7
    pp_data.event = event ;
Packit b099d7
    pp_data.params = params ;
Packit b099d7
    pp_data.num_params = num_params ;
Packit b099d7
Packit b099d7
    _XmParentProcess( XtParent( pw), (XmParentProcessData) &pp_data) ;
Packit b099d7
}
Packit b099d7
Packit b099d7
/**********************************************************************
Packit b099d7
 *
Packit b099d7
 * _XmButtonTakeFocus
Packit b099d7
 *
Packit b099d7
 *********************************************************************/
Packit b099d7
/*ARGSUSED*/
Packit b099d7
void 
Packit b099d7
_XmButtonTakeFocus(
Packit b099d7
        Widget wid,
Packit b099d7
        XEvent *event,		/* unused */
Packit b099d7
        String *params,		/* unused */
Packit b099d7
        Cardinal *num_params )	/* unused */
Packit b099d7
{
Packit b099d7
    XmProcessTraversal(wid, XmTRAVERSE_CURRENT);
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
}