The XtSetSensitive
function first calls XtSetValues on the current widget with an argument
list specifying that the sensitive field should change to the new value.
It then recursively propagates the new value down the managed children
tree by calling XtSetValues on each child to set the ancestor_sensitive
to the new value if the new values for sensitive and the child's ancestor_sensitive
are not the same.

XtSetSensitive calls XtSetValues to change sensitive
and ancestor_sensitive. Therefore, when one of these changes, the widget's
set_values procedure should take whatever display actions are needed (for
example, greying out or stippling the widget).

XtSetSensitive maintains
the invariant that if parent has either sensitive or ancestor_sensitive
False, then all children have ancestor_sensitive False.

The XtIsSensitive
function returns True or False to indicate whether or not user
input events are being dispatched. If both core.sensitive and core.ancestor_sensitive
are True, XtIsSensitive returns True; otherwise, it returns False.