If the widget is already realized, XtRealizeWidget(3)
simply returns. Otherwise, it performs the following:
Binds all action names in the widget's translation table to
procedures (see Section 10.1.2).
Makes a post-order traversal of the widget tree rooted at the
specified widget and calls the change_managed procedure of
each composite widget that has one or more managed children.
Constructs an XSetWindowAttributes structure filled in
with information derived from the Core widget fields and
calls the realize procedure for the widget, which adds any
widget-specific attributes and creates the X window.
If the widget is not a subclass of compositeWidgetClass,
XtRealizeWidget(3) returns; otherwise, it
continues and performs the following:
Descends recursively to each of the widget's managed children
and calls the realize procedures. Primitive widgets that
instantiate children are responsible for realizing those children
themselves.
Maps all of the managed children windows that have
mapped_when_managed True. (If a widget is managed but
mapped_when_managed is False, the widget is allocated visual
space but is not displayed. Some people seem to like this to
indicate certain states.)
If the widget is a top-level shell widget (that is, it has no
parent), and mapped_when_managed is True, XtRealizeWidget(3) maps the widget window.
The XtIsRealized(3) function returns True if the
widget has been realized, that is, if the widget has a nonzero X
window ID.
Some widget procedures (for example, set_values) might
tend to operate differently after the widget has been realized.
The XtUnrealizeWidget(3) function destroys the
windows of an existing widget and all of its children (recursively
down the widget tree). To recreate the windows at a later time,
call XtRealizeWidget(3) again. If the widget was
managed, it will be unmanaged automatically before its window is
freed.