Provided by: libmotif-dev_2.3.8-3.1build1_amd64 bug

NAME

       XmSpinBoxValidatePosition  —  translate  the  current value of the specified XmSpinBox child into a valid
       position

SYNOPSIS

       #include <Xm/SpinBox.h>
       int XmSpinBoxValidatePosition(
       Widget textfield,
       int *position);

DESCRIPTION

       The XmSpinBoxValidatePosition function is a utility that can be used by applications wanting to implement
       a  policy for tracking user modifications to editable XmSpinBox children of type XmNUMERIC. The specifics
       of when and how the user's modifications take effect is left up to the application.

       text_field
                 The text_field argument specifies the widget ID of the child of the  XmSpinBox  that  is  being
                 modified.  The  requirement  on  text_field is that it holds the accessTextual trait (already a
                 requirement for children of XmSpinBox). This way, XmSpinBox can extract the string out  of  the
                 text_field widget (even if it is not an XmTextField).

       position  The location pointed to by the position argument is assigned the result of the translation done
                 by XmSpinBoxValidatePosition.  XmSpinBoxValidatePosition first checks to make sure this  is  an
                 XmNUMERIC XmSpinBox child. If it is not, XSmpinBoxValidatePosition sets position to the current
                 position and returns XmCURRENT_VALUE.

       XmSpinBoxValidatePosition attempts to translate the input string to a  floating  point  number.  If  this
       translation   fails,  XmSpinBoxValidatePosition  sets  position  to  the  current  position  and  returns
       XmCURRENT_VALUE.

       XmSpinBoxValidatePosition converts the floating point number to an  integer  using  the  XmNdecimalPoints
       resource.  Extra  decimal  places  are  truncated. The resulting integer is range checked to make sure it
       falls within the valid range defined by XmNminimumValue and XmNmaximumValue inclusive. If the input falls
       outside  this  range,  XmSpinBoxValidatePosition  sets  position  to the nearest limit and returns either
       XmMINIMUM_VALUE or XmMAXIMUM_VALUE.

       Finally, XmSpinBoxValidatePosition checks the integer to make sure it belongs to the  series  defined  by
       XmNminimumValue  ...  XmNminimumValue  + ((n - 1) * XmNincrementValue). If the integer does not belong to
       this series, XmSpinBoxValidatePosition sets position to the nearest element which is less than  or  equal
       to the integer and returns XmINCREMENT_VALUE.

       Otherwise, XmSpinBoxValidatePosition assigns the integer to position and returns XmVALID_VALUE.

RETURN VALUE

       The  XmSpinBoxValidatePosition function returns the status of the validation.  The set of possible values
       returned is as follows:

       XmCURRENT_VALUE
                 Cannot convert, returning current position_value.

       XmMINIMUM_VALUE
                 Less than min.

       XmMAXIMUM_VALUE
                 More than max.

       XmINCREMENT_VALUE
                 Not on increment.

       XmVALID_VALUE
                 Okay.

EXAMPLES

       This first example demonstrates how the XmSpinBoxValidatePosition function could be used from  inside  an
       XmNmodifyVerifyCallback callback installed on the XmSpinBox or the XmSimpleSpinBox:

       /*
        * Install a callback on a spin box arrow press.
        */
         XtAddCallback(sb, XmNmodifyVerifyCallback, ModifyVerifyCB, NULL);
         XtAddCallback(simple_sb, XmNmodifyVerifyCallback, ModifyVerifyCB, NULL);

       with the callback doing:

       void ModifyVerifyCB(widget, call_data, client_data) {
           XmSpinBoxCallbackStruct *cbs = (XmSpinBoxCallbackStruct*) call_data;
           int position;
           Widget textual = NULL;
           if (XtIsSubclass(w, xmSimpleSpinBoxWidgetClass))
           {
               Arg args[1];
               XtSetArg(args[0], XmNtextField, &textual);
               XtGetValues(w, args, 1);
           }
           else if (XtIsSubclass(w, xmSpinBoxWidgetClass))
             textual = cbs->widget;
           else
             textual = (Widget) NULL;

           ...

           if (XmSpinBoxValidatePosition(textual, &position) == XmCURRENT_VALUE)
             XBell(XtDisplay(w), 0);
           else
             cbs->position = position;
       }

       This  second example demonstrates how the XmSpinBoxValidatePosition function could be used from inside an
       XmNactivateCallback callback installed on the TextField child of the XmSpinBox:

       /*
        * Install a callback on a spin box arrow press.
        */
       XtAddCallback(tf, XmNactivateCallback, ModifyVerifyChildCB, NULL);

       with the callback doing:

       void ModifyVerifyChildCB(widget, call_data, client_data) {
           int     position;
           Widget  textual = widget;
           Arg     args[1];

           if (XmSpinBoxValidatePosition (textual, &position) == XmCURRENT_VALUE)
             XBell(XtDisplay(widget), 0);

           /* Set the position constraint resource of the textfield */

           XtSetArg(args[0], XmNposition, position);
           XtSetValues(textual, args, 1);
       }

SEE ALSO

       XmSpinBox(3), XmCreateSpinBox(3)

                                                                                    XmSpinBoxValidatePosition(3)