[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]

Intuition will refresh a gadget whenever an operation has damaged the
layer of the window or requester to which it is attached.  Because of
this, the typical application does not need to call RefreshGList() as a
part of its IDCMP_REFRESHWINDOW event handling.

Intuition's refreshing of the gadgets of a damaged layer is done through
the layer's damage list.  This means that rendering is clipped or limited
to the layer's damage region--that part of the window or requester that
needs refreshing.

Intuition directly calls the Layers library functions BeginUpdate() and
EndUpdate(), so that rendering is restricted to the proper area.
Applications should not directly call these functions under Intuition,
instead, use the BeginRefresh() and EndRefresh() calls.  Calls to
RefreshGList() or RefreshGadgets() between BeginRefresh() and EndRefresh()
are not permitted.  Never add or remove gadgets between the BeginRefresh()
and EndRefresh() calls.

For more information on BeginRefresh() and EndRefresh(), see the
"Intuition Windows" chapter and the Amiga ROM Kernel Reference Manual:
Includes and Autodocs.

Gadgets which are positioned using GFLG_RELBOTTOM or GFLG_RELRIGHT, or
sized using GFLG_RELWIDTH or GFLG_RELHEIGHT pose a problem for this
scheme.  When the window is sized, the images for these gadgets must
change, even though they are not necessarily in the damage region.
Therefore, Intuition must add the original and new visual regions for such
relative gadgets to the damage region before refreshing the gadgets.  The
result of this is that applications should ensure that any gadgets with
relative position or size do not have Border, Image or IntuiText imagery
that extends beyond their select boxes.