[comp.windows.x.motif] Callbacks called incorrectly for XmText?

montnaro@spyder.crd.ge.com (Skip Montanaro) (12/14/90)

I'm using Motif 1.0.3 from ICS on a Sun-4. A very simple application
displays two XmText widgets in an XmRowColumn widget, one editable, the
other not. Pardon the fact that the following code is not C. I think it can
be followed. (It's from an interpreted object-oriented system developed here
called LYMB.) Motif_text is the class. The @ message sets the current
resource name of the object (text_1 or text_2), while the : message sets the
value of the resource. The various *_action= messages set the name of an
LYMB "actions" object to be invoked from the corresponding callback
function.

    motif_row_column new: rc
	parent= motif
	create!
    ;

    motif_text new: text_1
	parent= rc
	@ `columns' : 40
	@ `rows' : 1
	@ `resizeWidth' : false
	@ `resizeHeight' : false
	@ `editable' : false
	@ `value' : `Hello World (cannot edit)'
	activate_action= `activate_text1'
	value_changed_action= `value_changed_text1'
	modify_verify_action= `modify_verify_text1'
	losing_focus_action= `losing_focus_text1'
	focus_action= `focus_text1'
	create!
    ;

    motif_text new: text_2
	parent= rc
	@ `columns' : 40
	@ `rows' : 1
	@ `resizeWidth' : false
	@ `resizeHeight' : false
	@ `editable' : true
	@ `value' : `Hello World (edit this)'
	activate_action= `activate_text2'
	value_changed_action= `value_changed_text2'
	modify_verify_action= `modify_verify_text2'
	losing_focus_action= `losing_focus_text2'
	focus_action= `focus_text2'
	create!
    ;

Both widgets display correctly, and text_1's value cannot be changed.
Unfortunately, text_1's value_changed action (XmNvalueChangedCallback) still
gets invoked if the user tries to change the value of the widget.

I presume this is a bug in 1.0.3. If the documentation is correct, the
XmvalueChangedCallback should only be invoked after text is actually
inserted or deleted from the widget.

Thx,

--
Skip (montanaro@crdgw1.ge.com)