same callback is called when the user presses RETURN in the widget or when the user selects the OK button. This
convenience can confuse an unsuspecting programmer who may find that his callback is being invoked twice. It is
also possible to overestimate what the Motif toolkit is going to do and expect a callback to be invoked when it isn't.
The point is to be sure to verify that these callbacks are getting called at the appropriate times. See Chapter 6,
Selection Dialogs, for examples of this feature in SelectionDialogs, PromptDialogs, and CommandDialogs.
15.5.2 Text Modification Callbacks
In this section, we discuss the callback routines that can be used to monitor and control text modification. Monitoring
occurs both when the user types into a Text widget and when the text is changed using a convenience routine such as
XmTextInsert(). These callbacks work for both single−line and multiline Text widgets, as well as TextField
widgets. Since the text in a widget is modified by each keystroke, the modification callbacks are invoked quite
frequently.
There are two callbacks for text modification: XmNmodifyVerifyCallback is called before the text is modified,
and XmNvalueChangedCallback is called after the text has been changed. Depending on the needs of an
application, either or both callbacks may be used on the same widget. You should never call XtVaSetValues() in
one of these callbacks on the widget that is being modified because the state of the widget is unstable during these
callbacks. Avoid ...