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)