function first calls
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
on each child to set the ancestor_sensitive to the new value if the new
values for sensitive and the childs ancestor_sensitive are not the same.
to change sensitive and ancestor_sensitive.
Therefore, when one of these changes,
the widgets set_values procedure should
take whatever display actions are needed
(for example, greying out or stippling the widget).
maintains the invariant that if parent has either sensitive
then all children have ancestor_sensitive
to indicate whether or not user input events are being dispatched.
If both core.sensitive and core.ancestor_sensitive are
otherwise, it returns