-class implements optimized logic for refreshing
- areas of frame layout - which actually need to be updated.
- Is used as default updates-manager by wxFrameLayout.
-
- it is called "Garbage Collecting" u.mgr for it's implementation
- tries to find out dependencies between bars, and to order
- them ito "hierarchy", this hierarchical sorting resembles
- implemenation of heap-garbage collectors, which resolve
- dependencies between references.
-
- Example: there are situations where the order of moving
- the windows does matter:
-
- case 1)
- ------ ---
- | A | |B|
- ------ ---> | |
- --- --- ------
- |B| | A |
- | | ------
- ---
- (future)
- (past)
-
- past/future positions of A and B windows completely overlapp, i.e.
- depend on each other, and there is not solution for
- moving the windows witout refreshing both of them,
- -- we have cyclic dependency here. The gc. alg will
- find this cyclic dependecy and will force "refresh"
- after movement.
-
- case 2)
-
- ------
- | A |
- ------ --->
- ---
- |B| ------
- | | | A |
- --- ------
- ---
- |B|
- | |
- ---
-
- (future)
- (past)
-
- in this case past/future positions do not overlapp, thus
- it's enough only to move windows, without refreshing them.
- GC will "notice" it.
-
- there is also third case, when overlapping is partial
- in this case the refershing can be also avoided by
- moving windows in the order of "most-dependant" towards the
- "least-dependent". GC handles this automatically, by
- sorting windows by their dependency-level (or "hierarchy")
-
- See garbagec.h for more details of this method, garbagec.h/cpp
- implement sorting of generic-dependencies (does not deal
- with graphical objects directly)
-
- Summary: improves performance when complex/large windows are
- moved around, by reducing number of repaints. Also helps
- to avoid dirty non-client areas of moved windows
- in some special cases of "overlapping anomalies"
-
+This class implements optimized logic for refreshing
+the areas of frame layout that actually need to be updated.
+It is used as the default updates manager by wxFrameLayout.
+
+It is called 'Garbage Collecting' updates manager because
+its implementation tries to find out dependencies between bars,
+and to order them into a 'hierarchy'. This hierarchical sorting resembles
+the implementation of heap-garbage collectors, which resolve
+dependencies between references.
+
+Example: there are situations where the order in which the user
+moves windows does matter.
+
+\begin{verbatim}
+ case 1)
+ ------ ---
+ | A | |B|
+ ------ ---> | |
+ --- --- ------
+ |B| | A |
+ | | ------
+ ---
+ (future)
+ (past)
+\end{verbatim}
+
+Past/future positions of A and B windows completely overlap, i.e.
+depend on each other, and there is no solution for
+moving the windows without refreshing both of them
+-- we have a cyclic dependency here. The garbage collection algorithm will
+find this cyclic dependecy and will force refresh after movement.
+
+\begin{verbatim}
+ case 2)
+
+ ------
+ | A |
+ ------ --->
+ ---
+ |B| ------
+ | | | A |
+ --- ------
+ ---
+ |B|
+ | |
+ ---
+
+ (future)
+ (past)
+\end{verbatim}
+
+In this case past/future positions do not overlap, so
+it is enough only to move windows without refreshing them.
+Garbage collection will 'notice' this.
+
+There is also a third case, when overlapping is partial.
+In this case the refreshing can also be avoided by
+moving windows in the order of 'most-dependant' towards the
+'least-dependent'. GC handles this automatically, by
+sorting windows by their dependency-level (or 'hierarchy').
+
+See garbagec.h for more details of this method; garbagec.h/cpp
+implement sorting of generic dependencies and does not deal
+with graphical objects directly.
+
+Summary: garbage collection improves performance when complex or large
+windows are moved around, by reducing the number of repaints. It also helps
+to avoid dirty non-client areas of moved windows
+in some special cases of 'overlapping anomalies'.
+