2002-01-05 17:59:59 -05:00
|
|
|
%
|
|
|
|
% automatically generated by HelpGen $Revision$ from
|
2002-01-21 17:34:42 -05:00
|
|
|
% gcupdatesmgr.h at 21/Jan/02 21:14:19
|
2002-01-05 17:59:59 -05:00
|
|
|
%
|
|
|
|
|
|
|
|
|
|
|
|
\section{\class{cbGCUpdatesMgr}}\label{cbgcupdatesmgr}
|
|
|
|
|
|
|
|
|
2002-01-21 17:34:42 -05:00
|
|
|
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'.
|
|
|
|
|
2002-01-05 17:59:59 -05:00
|
|
|
\wxheading{Derived from}
|
|
|
|
|
|
|
|
\helpref{cbSimpleUpdatesMgr}{cbsimpleupdatesmgr}
|
|
|
|
|
2002-01-21 17:34:42 -05:00
|
|
|
\wxheading{Include files}
|
|
|
|
|
2002-01-31 15:57:31 -05:00
|
|
|
<wx/fl/gcupdatesmgr.h>
|
2002-01-21 17:34:42 -05:00
|
|
|
|
2002-01-05 17:59:59 -05:00
|
|
|
\wxheading{Data structures}
|
|
|
|
|
|
|
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
|
|
|
|
|
|
|
|
|
|
|
\membersection{cbGCUpdatesMgr::cbGCUpdatesMgr}\label{cbgcupdatesmgrcbgcupdatesmgr}
|
|
|
|
|
|
|
|
\func{}{cbGCUpdatesMgr}{\void}
|
|
|
|
|
2002-01-21 17:34:42 -05:00
|
|
|
Default constructor.
|
|
|
|
|
2002-01-05 17:59:59 -05:00
|
|
|
|
|
|
|
\func{}{cbGCUpdatesMgr}{\param{wxFrameLayout* }{pPanel}}
|
|
|
|
|
2002-01-21 17:34:42 -05:00
|
|
|
Constructor, taking a frame layout.
|
|
|
|
|
2002-01-05 17:59:59 -05:00
|
|
|
|
|
|
|
\membersection{cbGCUpdatesMgr::AddItem}\label{cbgcupdatesmgradditem}
|
|
|
|
|
|
|
|
\func{void}{AddItem}{\param{wxList\& }{itemList}, \param{cbBarInfo* }{pBar}, \param{cbDockPane* }{pPane}, \param{wxRect\& }{curBounds}, \param{wxRect\& }{prevBounds}}
|
|
|
|
|
2002-01-21 17:34:42 -05:00
|
|
|
Internal function for repositioning items.
|
|
|
|
|
2002-01-05 17:59:59 -05:00
|
|
|
|
|
|
|
\membersection{cbGCUpdatesMgr::DoRepositionItems}\label{cbgcupdatesmgrdorepositionitems}
|
|
|
|
|
|
|
|
\func{void}{DoRepositionItems}{\param{wxList\& }{items}}
|
|
|
|
|
2002-01-21 17:34:42 -05:00
|
|
|
Internal function for repositioning items.
|
|
|
|
|
2002-01-05 17:59:59 -05:00
|
|
|
|
|
|
|
\membersection{cbGCUpdatesMgr::OnStartChanges}\label{cbgcupdatesmgronstartchanges}
|
|
|
|
|
|
|
|
\func{void}{OnStartChanges}{\void}
|
|
|
|
|
2002-01-21 17:34:42 -05:00
|
|
|
Receives notifications from the frame layout.
|
2002-01-05 17:59:59 -05:00
|
|
|
|
|
|
|
|
|
|
|
\membersection{cbGCUpdatesMgr::UpdateNow}\label{cbgcupdatesmgrupdatenow}
|
|
|
|
|
|
|
|
\func{void}{UpdateNow}{\void}
|
|
|
|
|
2002-01-21 17:34:42 -05:00
|
|
|
Refreshes the parts of the frame layout which need an update.
|
2002-01-05 17:59:59 -05:00
|
|
|
|