|
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 HAVE_CONFIG_H
|
|
Packit |
b099d7 |
#include <config.h>
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef REV_INFO
|
|
Packit |
b099d7 |
#ifndef lint
|
|
Packit |
b099d7 |
static char rcsid[] = "$XConsortium: Separator.c /main/14 1996/03/25 17:53:11 barstow $"
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* (c) Copyright 1987, 1988, 1989, 1990, 1991, 1992 HEWLETT-PACKARD COMPANY */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include <stdio.h>
|
|
Packit |
b099d7 |
#include <ctype.h>
|
|
Packit |
b099d7 |
#include <X11/keysymdef.h>
|
|
Packit |
b099d7 |
#include <X11/IntrinsicP.h>
|
|
Packit |
b099d7 |
#include "XmI.h"
|
|
Packit |
b099d7 |
#include <Xm/RowColumnP.h>
|
|
Packit |
b099d7 |
#include <Xm/SeparatorP.h>
|
|
Packit |
b099d7 |
#include "RepTypeI.h"
|
|
Packit |
b099d7 |
#include <Xm/TraitP.h>
|
|
Packit |
b099d7 |
#include <Xm/MenuT.h>
|
|
Packit |
b099d7 |
#include <Xm/DrawP.h>
|
|
Packit |
b099d7 |
#include <Xm/VaSimpleP.h>
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/******** Static Function Declarations ********/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void ClassInitialize() ;
|
|
Packit |
b099d7 |
static void ClassPartInitialize(
|
|
Packit |
b099d7 |
WidgetClass wc) ;
|
|
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 GetSeparatorGC(
|
|
Packit |
b099d7 |
XmSeparatorWidget mw) ;
|
|
Packit |
b099d7 |
static void Redisplay(
|
|
Packit |
b099d7 |
Widget wid,
|
|
Packit |
b099d7 |
XEvent *event,
|
|
Packit |
b099d7 |
Region region) ;
|
|
Packit |
b099d7 |
static void Destroy(
|
|
Packit |
b099d7 |
Widget wid) ;
|
|
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 |
|
|
Packit |
b099d7 |
/******** End Static Function Declarations ********/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Menu Savvy trait record */
|
|
Packit |
b099d7 |
static XmConst XmMenuSavvyTraitRec MenuSavvySeparatorRecord = {
|
|
Packit |
b099d7 |
0, /* version */
|
|
Packit |
b099d7 |
NULL, /* disableCallback */
|
|
Packit |
b099d7 |
NULL, /* getAccelerator */
|
|
Packit |
b099d7 |
NULL, /* getMnemonic */
|
|
Packit |
b099d7 |
NULL, /* getActivateCBName */
|
|
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 |
{
|
|
Packit |
b099d7 |
XmNmargin,
|
|
Packit |
b099d7 |
sizeof (Dimension),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmSeparatorRec, separator.margin),
|
|
Packit |
b099d7 |
XmeFromHorizontalPixels,
|
|
Packit |
b099d7 |
XmeToHorizontalPixels
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Resource list for Separator */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XtResource resources[] =
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNseparatorType, XmCSeparatorType, XmRSeparatorType, sizeof (unsigned char),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmSeparatorRec, separator.separator_type),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) XmSHADOW_ETCHED_IN
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNmargin,
|
|
Packit |
b099d7 |
XmCMargin,
|
|
Packit |
b099d7 |
XmRHorizontalDimension,
|
|
Packit |
b099d7 |
sizeof (Dimension),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmSeparatorRec, separator.margin),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) 0
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNorientation, XmCOrientation, XmROrientation, sizeof (unsigned char),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmSeparatorRec, separator.orientation),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) XmHORIZONTAL
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNtraversalOn,
|
|
Packit |
b099d7 |
XmCTraversalOn,
|
|
Packit |
b099d7 |
XmRBoolean,
|
|
Packit |
b099d7 |
sizeof (Boolean),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmPrimitiveRec, primitive.traversal_on),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) FALSE
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNhighlightThickness,
|
|
Packit |
b099d7 |
XmCHighlightThickness,
|
|
Packit |
b099d7 |
XmRHorizontalDimension,
|
|
Packit |
b099d7 |
sizeof (Dimension),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmPrimitiveRec, primitive.highlight_thickness),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) 0
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNshadowThickness,
|
|
Packit |
b099d7 |
XmCShadowThickness,
|
|
Packit |
b099d7 |
XmRHorizontalDimension,
|
|
Packit |
b099d7 |
sizeof (Dimension),
|
|
Packit |
b099d7 |
XtOffsetOf( struct _XmPrimitiveRec, primitive.shadow_thickness),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) 2
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* The Separator class record definition */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
externaldef(xmseparatorclassrec) XmSeparatorClassRec xmSeparatorClassRec =
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
(WidgetClass) &xmPrimitiveClassRec, /* superclass */
|
|
Packit |
b099d7 |
"XmSeparator", /* class_name */
|
|
Packit |
b099d7 |
sizeof(XmSeparatorRec), /* widget_size */
|
|
Packit |
b099d7 |
ClassInitialize, /* class_initialize */
|
|
Packit |
b099d7 |
ClassPartInitialize, /* class_part_initialize */
|
|
Packit |
b099d7 |
FALSE, /* class_inited */
|
|
Packit |
b099d7 |
Initialize, /* initialize */
|
|
Packit |
b099d7 |
(XtArgsProc)NULL, /* initialize_hook */
|
|
Packit |
b099d7 |
XtInheritRealize, /* 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 |
XtExposeCompressSeries | /* compress_exposure */
|
|
Packit |
b099d7 |
XtExposeNoRegion,
|
|
Packit |
b099d7 |
TRUE, /* compress_enterleave */
|
|
Packit |
b099d7 |
FALSE, /* visible_interest */
|
|
Packit |
b099d7 |
Destroy, /* destroy */
|
|
Packit |
b099d7 |
(XtWidgetProc)NULL, /* resize */
|
|
Packit |
b099d7 |
Redisplay, /* expose */
|
|
Packit |
b099d7 |
SetValues, /* set_values */
|
|
Packit |
b099d7 |
(XtArgsFunc)NULL, /* set_values_hook */
|
|
Packit |
b099d7 |
XtInheritSetValuesAlmost, /* set_values_almost */
|
|
Packit |
b099d7 |
(XtArgsProc)NULL, /* get_values_hook */
|
|
Packit |
b099d7 |
(XtAcceptFocusProc)NULL, /* accept_focus */
|
|
Packit |
b099d7 |
XtVersion, /* version */
|
|
Packit |
b099d7 |
NULL, /* callback private */
|
|
Packit |
b099d7 |
NULL, /* tm_table */
|
|
Packit |
b099d7 |
(XtGeometryHandler)NULL, /* query_geometry */
|
|
Packit |
b099d7 |
(XtStringProc)NULL, /* display_accelerator */
|
|
Packit |
b099d7 |
NULL, /* extension */
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
(XtWidgetProc)NULL, /* Primitive border_highlight */
|
|
Packit |
b099d7 |
(XtWidgetProc)NULL, /* Primitive border_unhighlight */
|
|
Packit |
b099d7 |
NULL, /* translations */
|
|
Packit |
b099d7 |
(XtActionProc)NULL, /* arm_and_activate */
|
|
Packit |
b099d7 |
syn_resources, /* syn resources */
|
|
Packit |
b099d7 |
XtNumber(syn_resources), /* num syn_resources */
|
|
Packit |
b099d7 |
NULL, /* extension */
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
(XtPointer) NULL, /* extension */
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
externaldef(xmseparatorwidgetclass) WidgetClass xmSeparatorWidgetClass =
|
|
Packit |
b099d7 |
(WidgetClass) &xmSeparatorClassRec;
|
|
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 |
/* Install the menu savvy trait. */
|
|
Packit |
b099d7 |
XmeTraitSet((XtPointer) xmSeparatorWidgetClass, XmQTmenuSavvy,
|
|
Packit |
b099d7 |
(XtPointer) &MenuSavvySeparatorRecord);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* ClassPartInitialize
|
|
Packit |
b099d7 |
* Set up the fast subclassing for the widget
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
************************************************************************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
ClassPartInitialize(
|
|
Packit |
b099d7 |
WidgetClass wc )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
_XmFastSubclassInit (wc, XmSEPARATOR_BIT);
|
|
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 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
Initialize(
|
|
Packit |
b099d7 |
Widget rw,
|
|
Packit |
b099d7 |
Widget nw,
|
|
Packit |
b099d7 |
ArgList args, /* unused */
|
|
Packit |
b099d7 |
Cardinal *num_args ) /* unused */
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmSeparatorWidget request = (XmSeparatorWidget) rw ;
|
|
Packit |
b099d7 |
XmSeparatorWidget new_w = (XmSeparatorWidget) nw ;
|
|
Packit |
b099d7 |
new_w -> primitive.traversal_on = FALSE;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Force highlightThickness to zero if in a menu. */
|
|
Packit |
b099d7 |
if (XmIsRowColumn(XtParent(new_w)) &&
|
|
Packit |
b099d7 |
((RC_Type(XtParent(new_w)) == XmMENU_PULLDOWN) ||
|
|
Packit |
b099d7 |
(RC_Type(XtParent(new_w)) == XmMENU_POPUP)))
|
|
Packit |
b099d7 |
new_w->primitive.highlight_thickness = 0;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( !XmRepTypeValidValue( XmRID_SEPARATOR_TYPE,
|
|
Packit |
b099d7 |
new_w->separator.separator_type, (Widget) new_w) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
new_w -> separator.separator_type = XmSHADOW_ETCHED_IN;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( !XmRepTypeValidValue( XmRID_ORIENTATION,
|
|
Packit |
b099d7 |
new_w->separator.orientation, (Widget) new_w) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
new_w -> separator.orientation = XmHORIZONTAL;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (new_w->separator.orientation == XmHORIZONTAL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (request -> core.width == 0)
|
|
Packit |
b099d7 |
new_w -> core.width = 2 * new_w -> primitive.highlight_thickness +2;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (request -> core.height == 0)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
new_w -> core.height = 2 * new_w -> primitive.highlight_thickness;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (new_w -> separator.separator_type == XmSINGLE_LINE ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSINGLE_DASHED_LINE)
|
|
Packit |
b099d7 |
new_w -> core.height += 3;
|
|
Packit |
b099d7 |
else if (new_w -> separator.separator_type == XmSHADOW_ETCHED_IN ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSHADOW_ETCHED_OUT ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSHADOW_ETCHED_IN_DASH ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSHADOW_ETCHED_OUT_DASH)
|
|
Packit |
b099d7 |
new_w -> core.height += new_w -> primitive.shadow_thickness;
|
|
Packit |
b099d7 |
else if (new_w -> separator.separator_type == XmDOUBLE_LINE ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmDOUBLE_DASHED_LINE)
|
|
Packit |
b099d7 |
new_w -> core.height += 5;
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
if (new_w -> core.height == 0)
|
|
Packit |
b099d7 |
new_w -> core.height = 1;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (new_w->separator.orientation == XmVERTICAL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (request -> core.height == 0)
|
|
Packit |
b099d7 |
new_w -> core.height = 2 * new_w -> primitive.highlight_thickness +2;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (request -> core.width == 0)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
new_w -> core.width = 2 * new_w -> primitive.highlight_thickness;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (new_w -> separator.separator_type == XmSINGLE_LINE ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSINGLE_DASHED_LINE)
|
|
Packit |
b099d7 |
new_w -> core.width += 3;
|
|
Packit |
b099d7 |
else if (new_w -> separator.separator_type == XmSHADOW_ETCHED_IN ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSHADOW_ETCHED_OUT ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSHADOW_ETCHED_IN_DASH ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSHADOW_ETCHED_OUT_DASH)
|
|
Packit |
b099d7 |
new_w -> core.width += new_w -> primitive.shadow_thickness;
|
|
Packit |
b099d7 |
else if (new_w -> separator.separator_type == XmDOUBLE_LINE ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmDOUBLE_DASHED_LINE)
|
|
Packit |
b099d7 |
new_w -> core.width += 5;
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
if (new_w -> core.width == 0)
|
|
Packit |
b099d7 |
new_w -> core.width = 1;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Get the drawing graphics contexts. */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
GetSeparatorGC (new_w);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* GetSeparatorGC
|
|
Packit |
b099d7 |
* Get the graphics context used for drawing the separator.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
************************************************************************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
GetSeparatorGC(
|
|
Packit |
b099d7 |
XmSeparatorWidget mw )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XGCValues values;
|
|
Packit |
b099d7 |
XtGCMask valueMask;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
valueMask = GCForeground | GCBackground;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
values.foreground = mw -> primitive.foreground;
|
|
Packit |
b099d7 |
values.background = mw -> core.background_pixel;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (mw -> separator.separator_type == XmSINGLE_DASHED_LINE ||
|
|
Packit |
b099d7 |
mw -> separator.separator_type == XmDOUBLE_DASHED_LINE)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
valueMask = valueMask | GCLineStyle;
|
|
Packit |
b099d7 |
values.line_style = LineDoubleDash;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
mw -> separator.separator_GC = XtGetGC ((Widget) mw, valueMask, &values);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Redisplay
|
|
Packit |
b099d7 |
* Invoke the application exposure callbacks.
|
|
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 |
XmSeparatorWidget mw = (XmSeparatorWidget) wid ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmeDrawSeparator(XtDisplay(wid), XtWindow(wid),
|
|
Packit |
b099d7 |
mw->primitive.top_shadow_GC,
|
|
Packit |
b099d7 |
mw->primitive.bottom_shadow_GC,
|
|
Packit |
b099d7 |
mw->separator.separator_GC,
|
|
Packit |
b099d7 |
mw->primitive.highlight_thickness,
|
|
Packit |
b099d7 |
mw->primitive.highlight_thickness,
|
|
Packit |
b099d7 |
mw->core.width - 2*mw->primitive.highlight_thickness,
|
|
Packit |
b099d7 |
mw->core.height - 2*mw->primitive.highlight_thickness,
|
|
Packit |
b099d7 |
mw->primitive.shadow_thickness,
|
|
Packit |
b099d7 |
mw->separator.margin,
|
|
Packit |
b099d7 |
mw->separator.orientation,
|
|
Packit |
b099d7 |
mw->separator.separator_type);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Destroy
|
|
Packit |
b099d7 |
* Remove the callback lists.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
************************************************************************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
Destroy(
|
|
Packit |
b099d7 |
Widget wid )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XtReleaseGC (wid, ((XmSeparatorWidget) wid)->separator.separator_GC);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* SetValues
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
************************************************************************/
|
|
Packit |
b099d7 |
/*ARGSUSED*/
|
|
Packit |
b099d7 |
static Boolean
|
|
Packit |
b099d7 |
SetValues(
|
|
Packit |
b099d7 |
Widget cw,
|
|
Packit |
b099d7 |
Widget rw,
|
|
Packit |
b099d7 |
Widget nw,
|
|
Packit |
b099d7 |
ArgList args, /* unused */
|
|
Packit |
b099d7 |
Cardinal *num_args ) /* unused */
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmSeparatorWidget current = (XmSeparatorWidget) cw ;
|
|
Packit |
b099d7 |
XmSeparatorWidget request = (XmSeparatorWidget) rw ;
|
|
Packit |
b099d7 |
XmSeparatorWidget new_w = (XmSeparatorWidget) nw ;
|
|
Packit |
b099d7 |
Boolean flag = FALSE;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* We never allow our traversal flags to be changed during SetValues();
|
|
Packit |
b099d7 |
* this is enforced by our superclass.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Force traversal_on to FALSE */
|
|
Packit |
b099d7 |
new_w -> primitive.traversal_on = FALSE;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Force highlightThickness to zero if in a menu. */
|
|
Packit |
b099d7 |
if (XmIsRowColumn(XtParent(new_w)) &&
|
|
Packit |
b099d7 |
((RC_Type(XtParent(new_w)) == XmMENU_PULLDOWN) ||
|
|
Packit |
b099d7 |
(RC_Type(XtParent(new_w)) == XmMENU_POPUP)))
|
|
Packit |
b099d7 |
new_w->primitive.highlight_thickness = 0;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( !XmRepTypeValidValue( XmRID_SEPARATOR_TYPE,
|
|
Packit |
b099d7 |
new_w->separator.separator_type, (Widget) new_w) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
new_w -> separator.separator_type = current -> separator.separator_type;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( !XmRepTypeValidValue( XmRID_ORIENTATION,
|
|
Packit |
b099d7 |
new_w->separator.orientation, (Widget) new_w) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
new_w -> separator.orientation = current -> separator.orientation;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (new_w -> separator.orientation == XmHORIZONTAL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (request -> core.width == 0)
|
|
Packit |
b099d7 |
new_w -> core.width = 2 * new_w->primitive.highlight_thickness + 2;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (request -> core.height == 0)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
new_w -> core.height = 2 * new_w -> primitive.highlight_thickness;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (new_w -> separator.separator_type == XmSINGLE_LINE ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSINGLE_DASHED_LINE)
|
|
Packit |
b099d7 |
new_w -> core.height += 3;
|
|
Packit |
b099d7 |
else if (new_w -> separator.separator_type == XmSHADOW_ETCHED_IN ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSHADOW_ETCHED_OUT ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSHADOW_ETCHED_IN_DASH ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSHADOW_ETCHED_OUT_DASH)
|
|
Packit |
b099d7 |
new_w -> core.height += new_w -> primitive.shadow_thickness;
|
|
Packit |
b099d7 |
else if (new_w -> separator.separator_type == XmDOUBLE_LINE ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmDOUBLE_DASHED_LINE)
|
|
Packit |
b099d7 |
new_w -> core.height += 5;
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
if (new_w -> core.height == 0)
|
|
Packit |
b099d7 |
new_w -> core.height = 1;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((new_w -> separator.separator_type != current -> separator.separator_type ||
|
|
Packit |
b099d7 |
new_w -> primitive.shadow_thickness != current -> primitive.shadow_thickness ||
|
|
Packit |
b099d7 |
new_w -> primitive.highlight_thickness != current -> primitive.highlight_thickness) &&
|
|
Packit |
b099d7 |
request -> core.height == current -> core.height)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (new_w -> separator.separator_type == XmSINGLE_LINE ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSINGLE_DASHED_LINE)
|
|
Packit |
b099d7 |
new_w -> core.height = 2 * new_w -> primitive.highlight_thickness + 3;
|
|
Packit |
b099d7 |
else if (new_w -> separator.separator_type == XmSHADOW_ETCHED_IN ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSHADOW_ETCHED_OUT ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSHADOW_ETCHED_IN_DASH ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSHADOW_ETCHED_OUT_DASH)
|
|
Packit |
b099d7 |
new_w -> core.height = 2 * new_w -> primitive.highlight_thickness +
|
|
Packit |
b099d7 |
new_w -> primitive.shadow_thickness;
|
|
Packit |
b099d7 |
else if (new_w -> separator.separator_type == XmDOUBLE_LINE ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmDOUBLE_DASHED_LINE)
|
|
Packit |
b099d7 |
new_w -> core.height = 2 * new_w -> primitive.highlight_thickness + 5;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (new_w -> separator.orientation == XmVERTICAL)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (request -> core.height == 0)
|
|
Packit |
b099d7 |
new_w -> core.height = 2 * new_w->primitive.highlight_thickness + 2;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (request -> core.width == 0)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
new_w -> core.width = 2 * new_w -> primitive.highlight_thickness;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (new_w -> separator.separator_type == XmSINGLE_LINE ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSINGLE_DASHED_LINE)
|
|
Packit |
b099d7 |
new_w -> core.width += 3;
|
|
Packit |
b099d7 |
else if (new_w -> separator.separator_type == XmSHADOW_ETCHED_IN ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSHADOW_ETCHED_OUT ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSHADOW_ETCHED_IN_DASH ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSHADOW_ETCHED_OUT_DASH)
|
|
Packit |
b099d7 |
new_w -> core.width += new_w -> primitive.shadow_thickness;
|
|
Packit |
b099d7 |
else if (new_w -> separator.separator_type == XmDOUBLE_LINE ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmDOUBLE_DASHED_LINE)
|
|
Packit |
b099d7 |
new_w -> core.width += 5;
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
if (new_w -> core.width == 0)
|
|
Packit |
b099d7 |
new_w -> core.width = 1;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((new_w -> separator.separator_type != current -> separator.separator_type ||
|
|
Packit |
b099d7 |
new_w -> primitive.shadow_thickness != current -> primitive.shadow_thickness ||
|
|
Packit |
b099d7 |
new_w -> primitive.highlight_thickness != current -> primitive.highlight_thickness) &&
|
|
Packit |
b099d7 |
request -> core.width == current -> core.width)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if (new_w -> separator.separator_type == XmSINGLE_LINE ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSINGLE_DASHED_LINE)
|
|
Packit |
b099d7 |
new_w -> core.width = 2 * new_w -> primitive.highlight_thickness + 3;
|
|
Packit |
b099d7 |
else if (new_w -> separator.separator_type == XmSHADOW_ETCHED_IN ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSHADOW_ETCHED_OUT ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSHADOW_ETCHED_IN_DASH ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmSHADOW_ETCHED_OUT_DASH)
|
|
Packit |
b099d7 |
new_w -> core.width = 2 * new_w -> primitive.highlight_thickness +
|
|
Packit |
b099d7 |
new_w -> primitive.shadow_thickness;
|
|
Packit |
b099d7 |
else if (new_w -> separator.separator_type == XmDOUBLE_LINE ||
|
|
Packit |
b099d7 |
new_w -> separator.separator_type == XmDOUBLE_DASHED_LINE)
|
|
Packit |
b099d7 |
new_w -> core.width = 2 * new_w -> primitive.highlight_thickness + 5;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (new_w -> separator.orientation != current -> separator.orientation ||
|
|
Packit |
b099d7 |
new_w -> separator.margin != current -> separator.margin ||
|
|
Packit |
b099d7 |
new_w -> primitive.shadow_thickness != current -> primitive.shadow_thickness)
|
|
Packit |
b099d7 |
flag = TRUE;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (new_w -> separator.separator_type != current -> separator.separator_type ||
|
|
Packit |
b099d7 |
new_w -> core.background_pixel != current -> core.background_pixel ||
|
|
Packit |
b099d7 |
new_w -> primitive.foreground != current -> primitive.foreground)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XtReleaseGC ((Widget) new_w, new_w -> separator.separator_GC);
|
|
Packit |
b099d7 |
GetSeparatorGC (new_w);
|
|
Packit |
b099d7 |
flag = TRUE;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return (flag);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* XmCreateSeparator()
|
|
Packit |
b099d7 |
* XmVaCreateSeparator()
|
|
Packit |
b099d7 |
* XmVaCreateManagedSeparator()
|
|
Packit |
b099d7 |
* Create an instance of a separator and return the widget id.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
************************************************************************/
|
|
Packit |
b099d7 |
Widget
|
|
Packit |
b099d7 |
XmCreateSeparator(
|
|
Packit |
b099d7 |
Widget parent,
|
|
Packit |
b099d7 |
char *name,
|
|
Packit |
b099d7 |
ArgList arglist,
|
|
Packit |
b099d7 |
Cardinal argcount )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return (XtCreateWidget (name, xmSeparatorWidgetClass,
|
|
Packit |
b099d7 |
parent, arglist, argcount));
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
Widget
|
|
Packit |
b099d7 |
XmVaCreateSeparator(
|
|
Packit |
b099d7 |
Widget parent,
|
|
Packit |
b099d7 |
char *name,
|
|
Packit |
b099d7 |
...)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
register Widget w;
|
|
Packit |
b099d7 |
va_list var;
|
|
Packit |
b099d7 |
int count;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Va_start(var,name);
|
|
Packit |
b099d7 |
count = XmeCountVaListSimple(var);
|
|
Packit |
b099d7 |
va_end(var);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Va_start(var, name);
|
|
Packit |
b099d7 |
w = XmeVLCreateWidget(name,
|
|
Packit |
b099d7 |
xmSeparatorWidgetClass,
|
|
Packit |
b099d7 |
parent, False,
|
|
Packit |
b099d7 |
var, count);
|
|
Packit |
b099d7 |
va_end(var);
|
|
Packit |
b099d7 |
return w;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
Widget
|
|
Packit |
b099d7 |
XmVaCreateManagedSeparator(
|
|
Packit |
b099d7 |
Widget parent,
|
|
Packit |
b099d7 |
char *name,
|
|
Packit |
b099d7 |
...)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Widget w = NULL;
|
|
Packit |
b099d7 |
va_list var;
|
|
Packit |
b099d7 |
int count;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Va_start(var, name);
|
|
Packit |
b099d7 |
count = XmeCountVaListSimple(var);
|
|
Packit |
b099d7 |
va_end(var);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Va_start(var, name);
|
|
Packit |
b099d7 |
w = XmeVLCreateWidget(name,
|
|
Packit |
b099d7 |
xmSeparatorWidgetClass,
|
|
Packit |
b099d7 |
parent, True,
|
|
Packit |
b099d7 |
var, count);
|
|
Packit |
b099d7 |
va_end(var);
|
|
Packit |
b099d7 |
return w;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|