|
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 |
|
|
Packit |
b099d7 |
/************************************************************
|
|
Packit |
b099d7 |
* INCLUDE FILES
|
|
Packit |
b099d7 |
************************************************************/
|
|
Packit |
b099d7 |
#include <Xm/Xm.h>
|
|
Packit |
b099d7 |
#include <stdio.h>
|
|
Packit |
b099d7 |
#include <Xm/ButtonBoxP.h>
|
|
Packit |
b099d7 |
#include <Xm/ExtP.h>
|
|
Packit |
b099d7 |
#include <Xm/TraitP.h>
|
|
Packit |
b099d7 |
#include <Xm/TakesDefT.h>
|
|
Packit |
b099d7 |
#include <Xm/VaSimpleP.h>
|
|
Packit |
b099d7 |
#include "XmI.h"
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************
|
|
Packit |
b099d7 |
* TYPEDEFS AND DEFINES
|
|
Packit |
b099d7 |
************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define SUPERCLASS ((ConstraintWidgetClass) &xmManagerClassRec)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************
|
|
Packit |
b099d7 |
* MACROS
|
|
Packit |
b099d7 |
************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define IsHorizontal(x) (XmButtonBox_orientation((x)) == XmHORIZONTAL)
|
|
Packit |
b099d7 |
#define MarginH(x) (XmButtonBox_margin_height((x)))
|
|
Packit |
b099d7 |
#define MarginW(x) (XmButtonBox_margin_width((x)))
|
|
Packit |
b099d7 |
#define FillOption(x) (XmButtonBox_fill_option((x)))
|
|
Packit |
b099d7 |
#define EqualSize(x) (XmButtonBox_equal_size((x)))
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************
|
|
Packit |
b099d7 |
* EXTERNAL DECLARATIONS
|
|
Packit |
b099d7 |
************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************
|
|
Packit |
b099d7 |
* STATIC FUNCTION DECLARATIONS
|
|
Packit |
b099d7 |
************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void Initialize(Widget, Widget, ArgList, Cardinal *);
|
|
Packit |
b099d7 |
static void ClassInitialize(void);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void ClassPartInitialize(WidgetClass w_class) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void InsertChild(Widget);
|
|
Packit |
b099d7 |
static void Resize(Widget), ChangeManaged(Widget);
|
|
Packit |
b099d7 |
static void ConstraintInitialize(Widget, Widget, ArgList, Cardinal *);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static Boolean SetValues(Widget, Widget, Widget, ArgList, Cardinal *);
|
|
Packit |
b099d7 |
static Boolean ConstraintSetValues(Widget, Widget,
|
|
Packit |
b099d7 |
Widget, ArgList, Cardinal *);
|
|
Packit |
b099d7 |
static Boolean CvtStringToFillOption(Display *, XrmValuePtr, Cardinal *,
|
|
Packit |
b099d7 |
XrmValuePtr, XrmValuePtr);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XtGeometryResult GeometryManager(Widget, XtWidgetGeometry *,
|
|
Packit |
b099d7 |
XtWidgetGeometry *);
|
|
Packit |
b099d7 |
static XtGeometryResult QueryGeometry(Widget, XtWidgetGeometry *,
|
|
Packit |
b099d7 |
XtWidgetGeometry *);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XtGeometryResult TryNewLayout(Widget, Mask *, Boolean);
|
|
Packit |
b099d7 |
static Cardinal CalcChildrenPrefSizes(XmButtonBoxWidget, Dimension *,
|
|
Packit |
b099d7 |
Dimension *, Dimension *);
|
|
Packit |
b099d7 |
static void LayoutChildren(Widget, Widget);
|
|
Packit |
b099d7 |
static void CalcChildSize(XmButtonBoxWidget, Widget, Dimension,
|
|
Packit |
b099d7 |
Dimension, Dimension, Cardinal,
|
|
Packit |
b099d7 |
Dimension *, Dimension *);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void ButtonBoxSetDefaultShadow(Widget button) ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************
|
|
Packit |
b099d7 |
* STATIC DECLARATIONS
|
|
Packit |
b099d7 |
************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XtResource resources[] =
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNequalSize, XmCEqualSize, XmRBoolean,
|
|
Packit |
b099d7 |
sizeof(Boolean), XtOffsetOf(XmButtonBoxRec, button_box.equal_size),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) False
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNfillOption, XmCFillOption, XmRXmFillOption,
|
|
Packit |
b099d7 |
sizeof(XmFillOption), XtOffsetOf(XmButtonBoxRec, button_box.fill_option),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) XmFillNone
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNmarginHeight, XmCMargin, XmRVerticalDimension,
|
|
Packit |
b099d7 |
sizeof(Dimension), XtOffsetOf(XmButtonBoxRec, button_box.margin_height),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) 0
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNmarginWidth, XmCMargin, XmRHorizontalDimension,
|
|
Packit |
b099d7 |
sizeof(Dimension), XtOffsetOf(XmButtonBoxRec, button_box.margin_width),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) 0
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNorientation, XmCOrientation, XmROrientation,
|
|
Packit |
b099d7 |
sizeof(unsigned char), XtOffsetOf(XmButtonBoxRec, button_box.orientation),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer)XmHORIZONTAL
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNdefaultButton, XmCWidget, XmRWidget,
|
|
Packit |
b099d7 |
sizeof(Widget), XtOffsetOf(XmButtonBoxRec, button_box.default_button),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) NULL
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XmSyntheticResource get_resources[] =
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNmarginHeight, sizeof(Dimension),
|
|
Packit |
b099d7 |
XtOffsetOf(XmButtonBoxRec, button_box.margin_height),
|
|
Packit |
b099d7 |
XmeFromVerticalPixels, (XmImportProc) XmeToVerticalPixels
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmNmarginWidth, sizeof(Dimension),
|
|
Packit |
b099d7 |
XtOffsetOf(XmButtonBoxRec, button_box.margin_width),
|
|
Packit |
b099d7 |
XmeFromHorizontalPixels, (XmImportProc) XmeToHorizontalPixels
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XtResource constraints[] =
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
"pri.vate1", "Pri.vate1", XmRDimension, sizeof(Dimension),
|
|
Packit |
b099d7 |
XtOffsetOf(XmBBoxConstraintsRec, bbox.pref_width),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) 0
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
"pri.vate2", "Pri.vate2", XmRAttachment, sizeof(Dimension),
|
|
Packit |
b099d7 |
XtOffsetOf(XmBBoxConstraintsRec, bbox.pref_height),
|
|
Packit |
b099d7 |
XmRImmediate, (XtPointer) 0
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmButtonBoxClassRec xmButtonBoxClassRec = {
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* core_class members */
|
|
Packit |
b099d7 |
/* superclass */ (WidgetClass)SUPERCLASS,
|
|
Packit |
b099d7 |
/* class_name */ "XmButtonBox",
|
|
Packit |
b099d7 |
/* widget_size */ sizeof(XmButtonBoxRec),
|
|
Packit |
b099d7 |
/* class_initialize */ ClassInitialize,
|
|
Packit |
b099d7 |
/* class_part_init */ ClassPartInitialize,
|
|
Packit |
b099d7 |
/* class_inited */ False,
|
|
Packit |
b099d7 |
/* initialize */ Initialize,
|
|
Packit |
b099d7 |
/* initialize_hook */ NULL,
|
|
Packit |
b099d7 |
/* realize */ XtInheritRealize,
|
|
Packit |
b099d7 |
/* actions */ NULL,
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* num_actions */ 0,
|
|
Packit |
b099d7 |
/* resources */ (XtResource*)resources,
|
|
Packit |
b099d7 |
/* num_resources */ XtNumber(resources),
|
|
Packit |
b099d7 |
/* xrm_class */ NULLQUARK,
|
|
Packit |
b099d7 |
/* compress_motion */ True,
|
|
Packit |
b099d7 |
/* compress_exposure */ True,
|
|
Packit |
b099d7 |
/* compress_enterleave*/ True,
|
|
Packit |
b099d7 |
/* visible_interest */ False,
|
|
Packit |
b099d7 |
/* destroy */ NULL,
|
|
Packit |
b099d7 |
/* resize */ Resize,
|
|
Packit |
b099d7 |
/* expose */ NULL,
|
|
Packit |
b099d7 |
/* set_values */ SetValues,
|
|
Packit |
b099d7 |
/* set_values_hook */ NULL,
|
|
Packit |
b099d7 |
/* set_values_almost */ XtInheritSetValuesAlmost,
|
|
Packit |
b099d7 |
/* get_values_hook */ NULL,
|
|
Packit |
b099d7 |
/* accept_focus */ NULL,
|
|
Packit |
b099d7 |
/* version */ XtVersion,
|
|
Packit |
b099d7 |
/* callback_private */ NULL,
|
|
Packit |
b099d7 |
/* tm_table */ XtInheritTranslations,
|
|
Packit |
b099d7 |
/* query_geometry */ (XtGeometryHandler) QueryGeometry,
|
|
Packit |
b099d7 |
/* display_accelerator*/ NULL,
|
|
Packit |
b099d7 |
/* extension */ NULL,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* composite_class members */
|
|
Packit |
b099d7 |
/* geometry_manager */ GeometryManager,
|
|
Packit |
b099d7 |
/* change_managed */ ChangeManaged,
|
|
Packit |
b099d7 |
/* insert_child */ InsertChild,
|
|
Packit |
b099d7 |
/* delete_child */ XtInheritDeleteChild,
|
|
Packit |
b099d7 |
/* extension */ NULL,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{ /* constraint_class fields */
|
|
Packit |
b099d7 |
/* resource list */ constraints,
|
|
Packit |
b099d7 |
/* num resources */ XtNumber(constraints),
|
|
Packit |
b099d7 |
/* constraint size */ sizeof(XmBBoxConstraintsRec),
|
|
Packit |
b099d7 |
/* init proc */ ConstraintInitialize,
|
|
Packit |
b099d7 |
/* destroy proc */ NULL,
|
|
Packit |
b099d7 |
/* set values proc */ ConstraintSetValues,
|
|
Packit |
b099d7 |
/* extension */ NULL,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{ /* manager_class fields */
|
|
Packit |
b099d7 |
/* default translations */ XtInheritTranslations,
|
|
Packit |
b099d7 |
/* syn_resources */ get_resources,
|
|
Packit |
b099d7 |
/* num_syn_resources */ XtNumber(get_resources),
|
|
Packit |
b099d7 |
/* syn_cont_resources */ NULL,
|
|
Packit |
b099d7 |
/* num_syn_cont_resources */ 0,
|
|
Packit |
b099d7 |
/* parent_process */ XmInheritParentProcess,
|
|
Packit |
b099d7 |
/* extension */ NULL,
|
|
Packit |
b099d7 |
},
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* Row class members */
|
|
Packit |
b099d7 |
/* extension */ NULL,
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
};
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
WidgetClass xmButtonBoxWidgetClass = (WidgetClass)&xmButtonBoxClassRec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************
|
|
Packit |
b099d7 |
* STATIC CODE
|
|
Packit |
b099d7 |
************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Function Name: ClassInitialize
|
|
Packit |
b099d7 |
* Description: Called to initialize information specific
|
|
Packit |
b099d7 |
* to this widget class.
|
|
Packit |
b099d7 |
* Arguments: none.
|
|
Packit |
b099d7 |
* Returns: none.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* ARGSUSED */
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
ClassInitialize()
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmButtonBoxClassRec *wc = &xmButtonBoxClassRec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtSetTypeConverter(XmRString, XmRXmFillOption,
|
|
Packit |
b099d7 |
(XtTypeConverter) CvtStringToFillOption,
|
|
Packit |
b099d7 |
NULL, (Cardinal)0, XtCacheAll, (XtDestructor)NULL);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
ClassPartInitialize(WidgetClass w_class )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmButtonBoxWidgetClass bbClass
|
|
Packit |
b099d7 |
= (XmButtonBoxWidgetClass) w_class ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* this seems to do nothing.... why is it here? -rh
|
|
Packit |
b099d7 |
XmButtonBoxWidgetClass bbSuper
|
|
Packit |
b099d7 |
= (XmButtonBoxWidgetClass) w_class->core_class.superclass ;
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
_XmFastSubclassInit (w_class, XmBUTTONBOX_BIT);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Install the specifyrendertable trait for all subclasses */
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
XmeTraitSet((XtPointer)w_class, XmQTspecifyRenderTable,
|
|
Packit |
b099d7 |
(XtPointer) &bulletinbSRT);
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
return ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Function Name: Initialize
|
|
Packit |
b099d7 |
* Description: Called to initialize information specific
|
|
Packit |
b099d7 |
* to this widget.
|
|
Packit |
b099d7 |
* Arguments: req - what was originally requested.
|
|
Packit |
b099d7 |
* new - what will be created (our superclasses have
|
|
Packit |
b099d7 |
* already mucked with this)
|
|
Packit |
b099d7 |
* args, num_args - The arguments passed to
|
|
Packit |
b099d7 |
* the creation call.
|
|
Packit |
b099d7 |
* Returns: none.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* ARGSUSED */
|
|
Packit |
b099d7 |
static void Initialize(Widget req, Widget set,
|
|
Packit |
b099d7 |
ArgList args, Cardinal * num_args)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* This is here just in case no children are added before the
|
|
Packit |
b099d7 |
* widget is realized.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (req->core.width == 0)
|
|
Packit |
b099d7 |
set->core.width = 1;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (req->core.height == 0)
|
|
Packit |
b099d7 |
set->core.height = 1;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Function Name: ConstraintInitialize
|
|
Packit |
b099d7 |
* Description: Called to initialize information specific
|
|
Packit |
b099d7 |
* to this child widget.
|
|
Packit |
b099d7 |
* Arguments: req - what was originally requested.
|
|
Packit |
b099d7 |
* set - what will be created (our superclassed have
|
|
Packit |
b099d7 |
* already mucked with this)
|
|
Packit |
b099d7 |
* args, num_args - The arguments passed to
|
|
Packit |
b099d7 |
* the creation call.
|
|
Packit |
b099d7 |
* Returns: none.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* ARGSUSED */
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
ConstraintInitialize(Widget request, Widget set, ArgList args, Cardinal *num_args)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmButtonBoxC_pref_width(set) = XmButtonBoxC_pref_height(set) = 0;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Function Name: ConstraintSetValues
|
|
Packit |
b099d7 |
* Description: Called when child widget data needs to be modified on-
|
|
Packit |
b099d7 |
* the-fly.
|
|
Packit |
b099d7 |
* Arguments: current - the current (old) widget values.
|
|
Packit |
b099d7 |
* request - before superclassed have changed things.
|
|
Packit |
b099d7 |
* set - what will acutally be the new values.
|
|
Packit |
b099d7 |
* args, num_args - the arguments in the list.
|
|
Packit |
b099d7 |
* Returns: none
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* ARGSUSED */
|
|
Packit |
b099d7 |
static Boolean
|
|
Packit |
b099d7 |
ConstraintSetValues(Widget current, Widget request, Widget set,
|
|
Packit |
b099d7 |
ArgList args, Cardinal * num_args)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if ((XmButtonBoxC_pref_width(set) != set->core.width) ||
|
|
Packit |
b099d7 |
(XmButtonBoxC_pref_height(set) != set->core.height))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* The desired height or width changed, this will
|
|
Packit |
b099d7 |
* tell the icon box to perform a new XtQueryGeom.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmButtonBoxC_pref_width(set) = XmButtonBoxC_pref_height(set) = 0;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return(False);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Function Name: Resize
|
|
Packit |
b099d7 |
* Description: Called when this widget has been resized.
|
|
Packit |
b099d7 |
* Arguments: w - Button Box Widget to resize.
|
|
Packit |
b099d7 |
* Returns: none.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*ARGSUSED */
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
Resize(Widget w)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
LayoutChildren(w, NULL);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Function Name: QueryGeometry
|
|
Packit |
b099d7 |
* Description: Called when my parent wants to know my
|
|
Packit |
b099d7 |
* preferred size.
|
|
Packit |
b099d7 |
* Arguments: w - the widget to check.
|
|
Packit |
b099d7 |
* intended - parent imposed geometry.
|
|
Packit |
b099d7 |
* preferred - what I would like.
|
|
Packit |
b099d7 |
* Returns: status.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static XtGeometryResult
|
|
Packit |
b099d7 |
QueryGeometry(Widget w, XtWidgetGeometry *request,
|
|
Packit |
b099d7 |
XtWidgetGeometry *preferred)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmButtonBoxWidget bbox = (XmButtonBoxWidget)w;
|
|
Packit |
b099d7 |
Dimension max_major, max_minor, child_major_total;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Calculate our desired size.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
(void) CalcChildrenPrefSizes(bbox, &max_major,
|
|
Packit |
b099d7 |
&max_minor, &child_major_total);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (IsHorizontal(bbox)) {
|
|
Packit |
b099d7 |
preferred->width = child_major_total + (2 * MarginW(bbox));
|
|
Packit |
b099d7 |
preferred->height = max_minor + (2 * MarginH(bbox));
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
preferred->width = max_minor + (2 * MarginW(bbox));
|
|
Packit |
b099d7 |
preferred->height = child_major_total + (2 * MarginH(bbox));
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return(_XmHWQuery(w, request, preferred));
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Function Name: GeometryManager
|
|
Packit |
b099d7 |
* Description: handles request from children for size changes.
|
|
Packit |
b099d7 |
* Arguments: child - the child to change.
|
|
Packit |
b099d7 |
* request - desired geometry of child.
|
|
Packit |
b099d7 |
* result - what will be allowed if almost.
|
|
Packit |
b099d7 |
* Returns: status.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* ARGSUSED */
|
|
Packit |
b099d7 |
static XtGeometryResult
|
|
Packit |
b099d7 |
GeometryManager(Widget w, XtWidgetGeometry *request,
|
|
Packit |
b099d7 |
XtWidgetGeometry *reply)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmButtonBoxWidget bbox = (XmButtonBoxWidget)w->core.parent;
|
|
Packit |
b099d7 |
Mask mask = 0;
|
|
Packit |
b099d7 |
XtGeometryResult result;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Say no to any change in position.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( (request->request_mode & (CWX | CWY | CWBorderWidth)) &&
|
|
Packit |
b099d7 |
!(request->request_mode & (CWWidth | CWHeight)) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return (XtGeometryNo);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( request->request_mode & (CWWidth | CWHeight) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Dimension max_major, max_minor;
|
|
Packit |
b099d7 |
Dimension child_major, child_minor;
|
|
Packit |
b099d7 |
Dimension child_width, child_height;
|
|
Packit |
b099d7 |
Dimension child_major_total;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Cardinal num_managed;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Save the old size, and set the corresponding
|
|
Packit |
b099d7 |
* widget fields to the requested sizes.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Dimension old_width = XmButtonBoxC_pref_width(w);
|
|
Packit |
b099d7 |
Dimension old_height = XmButtonBoxC_pref_height(w);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( request->request_mode & CWWidth )
|
|
Packit |
b099d7 |
XmButtonBoxC_pref_width(w) = request->width;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( request->request_mode & CWHeight )
|
|
Packit |
b099d7 |
XmButtonBoxC_pref_height(w) = request->height;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* See if everything fits with the new size.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
(void) TryNewLayout((Widget)bbox, &mask,
|
|
Packit |
b099d7 |
(request->request_mode & XtCWQueryOnly));
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
num_managed = CalcChildrenPrefSizes(bbox, &max_major,
|
|
Packit |
b099d7 |
&max_minor, &child_major_total);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
CalcChildSize(bbox, w, max_major, max_minor,
|
|
Packit |
b099d7 |
child_major_total, num_managed, &child_major,
|
|
Packit |
b099d7 |
&child_minor);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (IsHorizontal(bbox)) {
|
|
Packit |
b099d7 |
child_height = child_minor;
|
|
Packit |
b099d7 |
child_width = child_major;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
child_height = child_major;
|
|
Packit |
b099d7 |
child_width = child_minor;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( (int)child_width >= (int)(2 * w->core.border_width) )
|
|
Packit |
b099d7 |
child_width -= (2 * w->core.border_width);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( (int)child_height >= (int)(2 * w->core.border_width) )
|
|
Packit |
b099d7 |
child_height -= (2 * w->core.border_width);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (((child_width == XmButtonBoxC_pref_width(w)) ||
|
|
Packit |
b099d7 |
!(request->request_mode & CWWidth)) &&
|
|
Packit |
b099d7 |
((child_height == XmButtonBoxC_pref_height(w)) ||
|
|
Packit |
b099d7 |
!(request->request_mode & CWHeight)))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
result = XtGeometryYes;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else if ((child_width != w->core.width) ||
|
|
Packit |
b099d7 |
(child_height != w->core.height))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
reply->request_mode = CWHeight | CWWidth;
|
|
Packit |
b099d7 |
reply->height = child_height;
|
|
Packit |
b099d7 |
reply->width = child_width;
|
|
Packit |
b099d7 |
result = XtGeometryAlmost;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
result = XtGeometryNo;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((request->request_mode & XtCWQueryOnly) ||
|
|
Packit |
b099d7 |
(result != XtGeometryYes))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmButtonBoxC_pref_width(w) = old_width;
|
|
Packit |
b099d7 |
XmButtonBoxC_pref_height(w) = old_height;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
LayoutChildren((Widget)bbox, w);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* We didn't get what we wanted, our preferred
|
|
Packit |
b099d7 |
* size should be recomputed the next time we have
|
|
Packit |
b099d7 |
* a chance to ask it, given that we're rejecting
|
|
Packit |
b099d7 |
* its current geometry and that it may not agree
|
|
Packit |
b099d7 |
* with our Almost reply.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (result != XtGeometryYes) {
|
|
Packit |
b099d7 |
if ( request->request_mode & CWWidth )
|
|
Packit |
b099d7 |
XmButtonBoxC_pref_width(w) = 0;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( request->request_mode & CWHeight )
|
|
Packit |
b099d7 |
XmButtonBoxC_pref_height(w) = 0;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return(result);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Stacking request only.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return (XtGeometryYes);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Function Name: ChangeManaged
|
|
Packit |
b099d7 |
* Description: when a management change has occurred.
|
|
Packit |
b099d7 |
* Arguments: w - the ButtonBox widget.
|
|
Packit |
b099d7 |
* Returns: none.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* ARGSUSED */
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
ChangeManaged(Widget w)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Mask mask = 0;
|
|
Packit |
b099d7 |
/* CR03420 mask should be set accordingly */
|
|
Packit |
b099d7 |
if (w->core.width == 1) mask |= CWWidth;
|
|
Packit |
b099d7 |
if (w->core.height == 1) mask |= CWHeight;
|
|
Packit |
b099d7 |
if (mask) (void)TryNewLayout(w, &mask, False);
|
|
Packit |
b099d7 |
LayoutChildren(w, NULL);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* for Motif navigation
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmeNavigChangeManaged(w);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Function Name: InsertChild
|
|
Packit |
b099d7 |
* Description: when a child widget is added.
|
|
Packit |
b099d7 |
* Arguments: w - the child widget
|
|
Packit |
b099d7 |
* Returns: none.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* ARGSUSED */
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
InsertChild(register Widget child)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Boolean is_button = False ;
|
|
Packit |
b099d7 |
XmButtonBoxWidget bb = (XmButtonBoxWidget) XtParent( child) ;
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Check for non-widgets - ButtonBox doesn't support gadgets, for now ...
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (_XmGadgetWarning(child))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Insert the child widget in the composite children list with the
|
|
Packit |
b099d7 |
* superclass insert_child routine.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* (*SUPERCLASS->composite_class.insert_child)(w); */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Another process may be updating the superclass's data */
|
|
Packit |
b099d7 |
/* (This was missed for some reason... - scorch)
|
|
Packit |
b099d7 |
* use composite class insert proc to do all the dirty work
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XtWidgetProc insert_child;
|
|
Packit |
b099d7 |
_XmProcessLock();
|
|
Packit |
b099d7 |
insert_child = ((XmManagerWidgetClass)xmManagerWidgetClass)->
|
|
Packit |
b099d7 |
composite_class.insert_child;
|
|
Packit |
b099d7 |
_XmProcessUnlock();
|
|
Packit |
b099d7 |
(*insert_child)(child);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if(XmeTraitGet((XtPointer)XtClass(child), XmQTtakesDefault))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
is_button = TRUE ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if( XmButtonBox_default_button( bb) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
/* Notify child that it has to be ready for default visual */
|
|
Packit |
b099d7 |
ButtonBoxSetDefaultShadow( child) ;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Function Name: SetValues
|
|
Packit |
b099d7 |
* Description: Called when some widget data needs to be modified on-
|
|
Packit |
b099d7 |
* the-fly.
|
|
Packit |
b099d7 |
* Arguments: current - the current (old) widget values.
|
|
Packit |
b099d7 |
* request - before superclassed have changed things.
|
|
Packit |
b099d7 |
* set - what will acutally be the new values.
|
|
Packit |
b099d7 |
* args, num_args - the arguments in the list.
|
|
Packit |
b099d7 |
* Returns: none
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* ARGSUSED */
|
|
Packit |
b099d7 |
static Boolean
|
|
Packit |
b099d7 |
SetValues(Widget current, Widget request, Widget set,
|
|
Packit |
b099d7 |
ArgList args, Cardinal * num_args)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmButtonBoxWidget b_old = (XmButtonBoxWidget) current;
|
|
Packit |
b099d7 |
XmButtonBoxWidget b_set = (XmButtonBoxWidget) set;
|
|
Packit |
b099d7 |
Boolean newLayout = False;
|
|
Packit |
b099d7 |
Mask mask = 0; /* CR03420 */
|
|
Packit |
b099d7 |
if ( XmButtonBox_equal_size(b_set) != XmButtonBox_equal_size(b_old) ||
|
|
Packit |
b099d7 |
XmButtonBox_fill_option(b_set) != XmButtonBox_fill_option(b_old) ||
|
|
Packit |
b099d7 |
XmButtonBox_margin_height(b_set) != XmButtonBox_margin_height(b_old) ||
|
|
Packit |
b099d7 |
XmButtonBox_margin_width(b_set) != XmButtonBox_margin_width(b_old) ||
|
|
Packit |
b099d7 |
XmButtonBox_orientation(b_set) != XmButtonBox_orientation(b_old) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
newLayout = True;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (set->core.width == 0)
|
|
Packit |
b099d7 |
{ /* CR03420 */
|
|
Packit |
b099d7 |
set->core.width = 1; /* setting to 1 to prevent zero width */
|
|
Packit |
b099d7 |
mask |= CWWidth;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if (set->core.height == 0)
|
|
Packit |
b099d7 |
{ /* CR03420 */
|
|
Packit |
b099d7 |
set->core.height = 1; /* setting to 1 to prevent zero height */
|
|
Packit |
b099d7 |
mask |= CWHeight;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if (mask) TryNewLayout((Widget)b_set, &mask, False);
|
|
Packit |
b099d7 |
if ( newLayout == True ) LayoutChildren((Widget)b_set, NULL);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return(False);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************
|
|
Packit |
b099d7 |
* Type Converters.
|
|
Packit |
b099d7 |
************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Function Name: CvtStringToFillOption
|
|
Packit |
b099d7 |
* Description: Converts a string to a FillOption
|
|
Packit |
b099d7 |
* Arguments: dpy - the X Display.
|
|
Packit |
b099d7 |
* args, num_args - *** NOT USED ***
|
|
Packit |
b099d7 |
* fromVal - contains the string to convert.
|
|
Packit |
b099d7 |
* toVal - contains the converted node state.
|
|
Packit |
b099d7 |
* Returns:
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* ARGSUSED */
|
|
Packit |
b099d7 |
static Boolean
|
|
Packit |
b099d7 |
CvtStringToFillOption(Display * dpy, XrmValuePtr args, Cardinal *num_args,
|
|
Packit |
b099d7 |
XrmValuePtr fromVal, XrmValuePtr toVal)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
static XmFillOption option;
|
|
Packit |
b099d7 |
char lowerName[BUFSIZ];
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmCopyISOLatin1Lowered(lowerName, (char *)fromVal->addr);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( streq(lowerName, "none") || streq(lowerName,"fillnone") )
|
|
Packit |
b099d7 |
option = XmFillNone;
|
|
Packit |
b099d7 |
else if ( streq(lowerName, "major") || streq(lowerName, "fillmajor") )
|
|
Packit |
b099d7 |
option = XmFillMajor;
|
|
Packit |
b099d7 |
else if ( streq(lowerName, "minor") || streq(lowerName, "fillminor") )
|
|
Packit |
b099d7 |
option = XmFillMinor;
|
|
Packit |
b099d7 |
else if ( streq(lowerName, "all") || streq(lowerName, "fillall") )
|
|
Packit |
b099d7 |
option = XmFillAll;
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XtDisplayStringConversionWarning(dpy, fromVal->addr, XmRXmFillOption);
|
|
Packit |
b099d7 |
return(False); /* Conversion failed. */
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( toVal->addr == NULL )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
toVal->size = sizeof(XmFillOption);
|
|
Packit |
b099d7 |
toVal->addr = (XtPointer)&option;
|
|
Packit |
b099d7 |
return(True);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
toVal->size = sizeof(XmFillOption);
|
|
Packit |
b099d7 |
if ( toVal->size >= sizeof(XmFillOption) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmFillOption *state = (XmFillOption *)toVal->addr;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
*state = option;
|
|
Packit |
b099d7 |
return(True);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return(False);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************
|
|
Packit |
b099d7 |
* LOCAL CODE
|
|
Packit |
b099d7 |
************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Function Name: TryNewLayout
|
|
Packit |
b099d7 |
* Description: tries to do a layout within the current width
|
|
Packit |
b099d7 |
* and height. If that fails, it tries to resize and
|
|
Packit |
b099d7 |
* do it within the geometry given in preferred_size.
|
|
Packit |
b099d7 |
* Arguments: parent - the ButtonBox
|
|
Packit |
b099d7 |
* mask - request mask
|
|
Packit |
b099d7 |
* queryOnly - should this only query
|
|
Packit |
b099d7 |
* Returns: status.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* ARGSUSED */
|
|
Packit |
b099d7 |
static XtGeometryResult
|
|
Packit |
b099d7 |
TryNewLayout(Widget parent, Mask *mask,
|
|
Packit |
b099d7 |
Boolean queryOnly)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmButtonBoxWidget bbox = (XmButtonBoxWidget)parent;
|
|
Packit |
b099d7 |
Dimension new_width, new_height;
|
|
Packit |
b099d7 |
Dimension max_major, max_minor, child_major_total;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Get the bounding width and height of all children.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
(void) CalcChildrenPrefSizes(bbox, &max_major,
|
|
Packit |
b099d7 |
&max_minor, &child_major_total);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (IsHorizontal(bbox))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
new_width = child_major_total + 2 * MarginW(bbox);
|
|
Packit |
b099d7 |
new_height = max_minor + 2 * MarginH(bbox);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
new_width = max_minor + 2 * MarginW(bbox);
|
|
Packit |
b099d7 |
new_height = child_major_total + 2 * MarginH(bbox);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Be sure that we are always at least one pixel high.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (new_width == 0)
|
|
Packit |
b099d7 |
new_width = 1;
|
|
Packit |
b099d7 |
if (new_height == 0)
|
|
Packit |
b099d7 |
new_height = 1;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( new_width != parent->core.width || new_height != parent->core.height )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XtWidgetGeometry request, reply;
|
|
Packit |
b099d7 |
XtGeometryResult result;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
request.width = new_width;
|
|
Packit |
b099d7 |
request.height = new_height;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
reply.width = 0;
|
|
Packit |
b099d7 |
reply.height = 0;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
request.request_mode = *mask; /* CR03420 */
|
|
Packit |
b099d7 |
if ( queryOnly )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
request.request_mode |= XtCWQueryOnly;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
result = XtMakeGeometryRequest(parent, &request, &reply);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( request.width == reply.width )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
*mask |= CWWidth;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if ( request.height == reply.height )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
*mask |= CWHeight;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( result == XtGeometryAlmost && !queryOnly )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
result = XtMakeGeometryRequest(parent, &reply, &reply);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return(result);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
*mask = CWWidth | CWHeight;
|
|
Packit |
b099d7 |
return(XtGeometryYes);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Function Name: LayoutChildren
|
|
Packit |
b099d7 |
* Description: Lays out the "child" widgets in the ButtonBox widget.
|
|
Packit |
b099d7 |
* Arguments: w - the ButtonBox widget.
|
|
Packit |
b099d7 |
* special_child - Treat this child special, actually
|
|
Packit |
b099d7 |
* set the new width and height instead
|
|
Packit |
b099d7 |
* of calling the Xt routine. This helps
|
|
Packit |
b099d7 |
* the geom mgr implement XtGeometryYes
|
|
Packit |
b099d7 |
* policy.
|
|
Packit |
b099d7 |
* Returns: none.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* ARGSUSED */
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
LayoutChildren(Widget w, Widget special_child)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmButtonBoxWidget bbox = (XmButtonBoxWidget)w;
|
|
Packit |
b099d7 |
Widget *childp;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Dimension margin_major, margin_minor;
|
|
Packit |
b099d7 |
Dimension max_major, max_minor;
|
|
Packit |
b099d7 |
Dimension box_major, box_minor;
|
|
Packit |
b099d7 |
Dimension child_major, child_minor;
|
|
Packit |
b099d7 |
Dimension child_width, child_height;
|
|
Packit |
b099d7 |
Dimension child_major_total;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Position pos_minor;
|
|
Packit |
b099d7 |
Position pos_x, pos_y;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
float pad = 0, pos_major;
|
|
Packit |
b099d7 |
Cardinal num_managed;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
child_major = 0;
|
|
Packit |
b099d7 |
child_minor = 0;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( IsHorizontal(bbox) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
margin_major = MarginW(bbox);
|
|
Packit |
b099d7 |
margin_minor = MarginH(bbox);
|
|
Packit |
b099d7 |
box_major = bbox->core.width;
|
|
Packit |
b099d7 |
box_minor = bbox->core.height;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
margin_major = MarginH(bbox);
|
|
Packit |
b099d7 |
margin_minor = MarginW(bbox);
|
|
Packit |
b099d7 |
box_major = bbox->core.height;
|
|
Packit |
b099d7 |
box_minor = bbox->core.width;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if ((int)box_major > (int)(2 * margin_major))
|
|
Packit |
b099d7 |
box_major -= 2 * margin_major;
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
box_major = 1;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((int)box_minor > (int)(2 * margin_minor))
|
|
Packit |
b099d7 |
box_minor -= 2 * margin_minor;
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
box_minor = 1;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
num_managed = CalcChildrenPrefSizes(bbox, &max_major,
|
|
Packit |
b099d7 |
&max_minor, &child_major_total);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
pad = 0.0;
|
|
Packit |
b099d7 |
pos_major = (float) margin_major;
|
|
Packit |
b099d7 |
if ((FillOption(bbox) == XmFillNone) || (FillOption(bbox) == XmFillMinor))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if ( box_major >= child_major_total ) {
|
|
Packit |
b099d7 |
pad = ((float) box_major -
|
|
Packit |
b099d7 |
(float) child_major_total) / ((float) num_managed + 1.0);
|
|
Packit |
b099d7 |
pos_major += pad;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
ForAllChildren(bbox, childp) {
|
|
Packit |
b099d7 |
if ( !XtIsManaged(*childp) )
|
|
Packit |
b099d7 |
continue;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
CalcChildSize(bbox, *childp, max_major, max_minor,
|
|
Packit |
b099d7 |
child_major_total, num_managed, &child_major,
|
|
Packit |
b099d7 |
&child_minor);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((FillOption(bbox) == XmFillNone) ||
|
|
Packit |
b099d7 |
(FillOption(bbox) == XmFillMajor))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
pos_minor = (((int)(box_minor - child_minor)) /2) + margin_minor;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
pos_minor = margin_minor;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( IsHorizontal(bbox) ) {
|
|
Packit |
b099d7 |
child_width = child_major;
|
|
Packit |
b099d7 |
child_height = child_minor;
|
|
Packit |
b099d7 |
if (LayoutIsRtoLM(bbox))
|
|
Packit |
b099d7 |
pos_x = box_major - (int) pos_major - child_width;
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
pos_x = (int) pos_major;
|
|
Packit |
b099d7 |
pos_y = pos_minor;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
pos_x = pos_minor;
|
|
Packit |
b099d7 |
pos_y = (int) pos_major;
|
|
Packit |
b099d7 |
child_width = child_minor;
|
|
Packit |
b099d7 |
child_height = child_major;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( (int)child_width >= (int)(2 * (*childp)->core.border_width) )
|
|
Packit |
b099d7 |
child_width -= (2 * (*childp)->core.border_width);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( (int)child_height >= (int)(2 * (*childp)->core.border_width) )
|
|
Packit |
b099d7 |
child_height -= (2 * (*childp)->core.border_width);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
child_width = (child_width == 0) ? 1 : child_width;
|
|
Packit |
b099d7 |
child_height = (child_height == 0) ? 1 : child_height;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (*childp == special_child) {
|
|
Packit |
b099d7 |
special_child->core.x = pos_x;
|
|
Packit |
b099d7 |
special_child->core.y = pos_y;
|
|
Packit |
b099d7 |
special_child->core.width = child_width;
|
|
Packit |
b099d7 |
special_child->core.height = child_height;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else {
|
|
Packit |
b099d7 |
_XmConfigureWidget(*childp, pos_x, pos_y, child_width,
|
|
Packit |
b099d7 |
child_height, (*childp)->core.border_width);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
pos_major += (float) child_major + pad;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Function Name: CalcChildrenPrefSizes
|
|
Packit |
b099d7 |
* Description: Determines the total size in the major direction
|
|
Packit |
b099d7 |
* of all children of the ButtonBox, as well as the
|
|
Packit |
b099d7 |
* maximum value in both major and minor directions.
|
|
Packit |
b099d7 |
* Arguments: bbox - the ButtonBox parent.
|
|
Packit |
b099d7 |
* max_major - the maximum size of all the children
|
|
Packit |
b099d7 |
* in the major dimension.
|
|
Packit |
b099d7 |
* total - return location for the total size in the
|
|
Packit |
b099d7 |
* major direction.
|
|
Packit |
b099d7 |
* Returns: number of managed children.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* ARGSUSED */
|
|
Packit |
b099d7 |
static Cardinal
|
|
Packit |
b099d7 |
CalcChildrenPrefSizes(XmButtonBoxWidget bbox, Dimension *max_major,
|
|
Packit |
b099d7 |
Dimension *max_minor, Dimension *total)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
Cardinal num_managed = 0;
|
|
Packit |
b099d7 |
Widget *childp;
|
|
Packit |
b099d7 |
XtWidgetGeometry geo;
|
|
Packit |
b099d7 |
Dimension *maj_dim, *minor_dim;
|
|
Packit |
b099d7 |
Boolean is_equal = EqualSize(bbox);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( IsHorizontal(bbox) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
maj_dim = &geo.width;
|
|
Packit |
b099d7 |
minor_dim = &geo.height;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
maj_dim = &geo.height;
|
|
Packit |
b099d7 |
minor_dim = &geo.width;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
*total = *max_major = *max_minor = 1;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
ForAllChildren(bbox, childp) {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( !XtIsManaged(*childp) )
|
|
Packit |
b099d7 |
continue;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
num_managed++;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((XmButtonBoxC_pref_width(*childp) == 0) ||
|
|
Packit |
b099d7 |
(XmButtonBoxC_pref_height(*childp) == 0))
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XtQueryGeometry(*childp, NULL, &geo;;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
geo.border_width = (*childp)->core.border_width;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (XmButtonBoxC_pref_width(*childp) == 0)
|
|
Packit |
b099d7 |
XmButtonBoxC_pref_width(*childp) = geo.width;
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
geo.width = XmButtonBoxC_pref_width(*childp);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (XmButtonBoxC_pref_height(*childp) == 0)
|
|
Packit |
b099d7 |
XmButtonBoxC_pref_height(*childp) = geo.height;
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
geo.height = XmButtonBoxC_pref_height(*childp);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
ASSIGN_MAX(*max_major, *maj_dim + (2 * geo.border_width));
|
|
Packit |
b099d7 |
ASSIGN_MAX(*max_minor, *minor_dim + (2 * geo.border_width));
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (!is_equal)
|
|
Packit |
b099d7 |
*total += (*maj_dim + (2 * geo.border_width));
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( is_equal )
|
|
Packit |
b099d7 |
*total = num_managed * (*max_major);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
return(num_managed);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Function Name: CalcChildSize
|
|
Packit |
b099d7 |
* Description: Determines the size of a child
|
|
Packit |
b099d7 |
* Arguments: bbox - the ButtonBox parent.
|
|
Packit |
b099d7 |
* w - the child of interest.
|
|
Packit |
b099d7 |
* max_major - the largest size allowed in the
|
|
Packit |
b099d7 |
* major direction.
|
|
Packit |
b099d7 |
* max_minor - the largest size allowed in the
|
|
Packit |
b099d7 |
* minor direction.
|
|
Packit |
b099d7 |
* child_major_total - total size of all children in the
|
|
Packit |
b099d7 |
* major direction.
|
|
Packit |
b099d7 |
* num_managed - number of managed children.
|
|
Packit |
b099d7 |
* child_major - return location for child's base
|
|
Packit |
b099d7 |
* major size.
|
|
Packit |
b099d7 |
* child_minor - return location for child's base
|
|
Packit |
b099d7 |
* minor size.
|
|
Packit |
b099d7 |
* Returns: none.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* ARGSUSED */
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
CalcChildSize(XmButtonBoxWidget bbox, Widget w, Dimension max_major,
|
|
Packit |
b099d7 |
Dimension max_minor, Dimension child_major_total,
|
|
Packit |
b099d7 |
Cardinal num_managed, Dimension *child_major,
|
|
Packit |
b099d7 |
Dimension *child_minor)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XtWidgetGeometry geo;
|
|
Packit |
b099d7 |
Dimension box_minor, box_major;
|
|
Packit |
b099d7 |
Dimension margin_major, margin_minor;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((XmButtonBoxC_pref_width(w) == 0)||(XmButtonBoxC_pref_height(w) == 0))
|
|
Packit |
b099d7 |
XtQueryGeometry(w, NULL, &geo;;
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
geo.border_width = w->core.border_width;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (XmButtonBoxC_pref_width(w) != 0)
|
|
Packit |
b099d7 |
geo.width = XmButtonBoxC_pref_width(w);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (XmButtonBoxC_pref_height(w) != 0)
|
|
Packit |
b099d7 |
geo.height = XmButtonBoxC_pref_height(w);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( IsHorizontal(bbox) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
margin_major = MarginW(bbox);
|
|
Packit |
b099d7 |
margin_minor = MarginH(bbox);
|
|
Packit |
b099d7 |
box_major = bbox->core.width;
|
|
Packit |
b099d7 |
box_minor = bbox->core.height;
|
|
Packit |
b099d7 |
*child_major = geo.width;
|
|
Packit |
b099d7 |
*child_minor = geo.height;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
margin_major = MarginH(bbox);
|
|
Packit |
b099d7 |
margin_minor = MarginW(bbox);
|
|
Packit |
b099d7 |
box_major = bbox->core.height;
|
|
Packit |
b099d7 |
box_minor = bbox->core.width;
|
|
Packit |
b099d7 |
*child_major = geo.height;
|
|
Packit |
b099d7 |
*child_minor = geo.width;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
*child_major += (2 * geo.border_width);
|
|
Packit |
b099d7 |
*child_minor += (2 * geo.border_width);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((int)box_major > (int)(2 * margin_major))
|
|
Packit |
b099d7 |
box_major -= (2 * margin_major);
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
box_major = 1;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ((int)box_minor > (int)(2 * margin_minor))
|
|
Packit |
b099d7 |
box_minor -= (2 * margin_minor);
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
box_minor = 1;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if ( EqualSize(bbox) )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
*child_major = max_major;
|
|
Packit |
b099d7 |
*child_minor = max_minor;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if ( FillOption(bbox) == XmFillMajor || FillOption(bbox) == XmFillAll ||
|
|
Packit |
b099d7 |
child_major_total > box_major )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
*child_major = (Dimension)
|
|
Packit |
b099d7 |
(((float)*child_major/(float)child_major_total) * box_major);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if ( FillOption(bbox) == XmFillMinor || FillOption(bbox) == XmFillAll ||
|
|
Packit |
b099d7 |
*child_minor > box_minor )
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
*child_minor = box_minor;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/************************************************************
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Public functions
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Function Name: XmCreateButtonBox
|
|
Packit |
b099d7 |
* Description: Creation Routine for UIL and ADA.
|
|
Packit |
b099d7 |
* Arguments: parent - the parent widget.
|
|
Packit |
b099d7 |
* name - the name of the widget.
|
|
Packit |
b099d7 |
* args, num_args - the number and list of args.
|
|
Packit |
b099d7 |
* Returns: The created widget.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Widget
|
|
Packit |
b099d7 |
XmCreateButtonBox(Widget parent, String name, ArgList args, Cardinal num_args)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
return(XtCreateWidget(name,
|
|
Packit |
b099d7 |
xmButtonBoxWidgetClass, parent, args, num_args));
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Widget
|
|
Packit |
b099d7 |
XmVaCreateButtonBox(
|
|
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 |
xmButtonBoxWidgetClass,
|
|
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 |
XmVaCreateManagedButtonBox(
|
|
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 |
xmButtonBoxWidgetClass,
|
|
Packit |
b099d7 |
parent, True,
|
|
Packit |
b099d7 |
var, count);
|
|
Packit |
b099d7 |
va_end(var);
|
|
Packit |
b099d7 |
return w;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/****************************************************************/
|
|
Packit |
b099d7 |
static void
|
|
Packit |
b099d7 |
ButtonBoxSetDefaultShadow(Widget button)
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
XmTakesDefaultTrait trait_default ;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
trait_default = (XmTakesDefaultTrait) XmeTraitGet((XtPointer)
|
|
Packit |
b099d7 |
XtClass(button),
|
|
Packit |
b099d7 |
XmQTtakesDefault) ;
|
|
Packit |
b099d7 |
if (trait_default)
|
|
Packit |
b099d7 |
trait_default->showAsDefault (button, XmDEFAULT_READY);
|
|
Packit |
b099d7 |
}
|