499b2ed82c
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13394 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
117 lines
3.5 KiB
TeX
117 lines
3.5 KiB
TeX
%
|
|
% automatically generated by HelpGen $Revision$ from
|
|
% gcupdatesmgr.h at 05/Jan/02 22:50:57
|
|
%
|
|
|
|
|
|
\section{\class{cbGCUpdatesMgr}}\label{cbgcupdatesmgr}
|
|
|
|
|
|
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"
|
|
|
|
\wxheading{Derived from}
|
|
|
|
\helpref{cbSimpleUpdatesMgr}{cbsimpleupdatesmgr}
|
|
|
|
\wxheading{Data structures}
|
|
|
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
|
|
|
|
|
\membersection{cbGCUpdatesMgr::cbGCUpdatesMgr}\label{cbgcupdatesmgrcbgcupdatesmgr}
|
|
|
|
\func{}{cbGCUpdatesMgr}{\void}
|
|
|
|
|
|
\func{}{cbGCUpdatesMgr}{\param{wxFrameLayout* }{pPanel}}
|
|
|
|
|
|
\membersection{cbGCUpdatesMgr::AddItem}\label{cbgcupdatesmgradditem}
|
|
|
|
\func{void}{AddItem}{\param{wxList\& }{itemList}, \param{cbBarInfo* }{pBar}, \param{cbDockPane* }{pPane}, \param{wxRect\& }{curBounds}, \param{wxRect\& }{prevBounds}}
|
|
|
|
|
|
\membersection{cbGCUpdatesMgr::DoRepositionItems}\label{cbgcupdatesmgrdorepositionitems}
|
|
|
|
\func{void}{DoRepositionItems}{\param{wxList\& }{items}}
|
|
|
|
|
|
\membersection{cbGCUpdatesMgr::OnStartChanges}\label{cbgcupdatesmgronstartchanges}
|
|
|
|
\func{void}{OnStartChanges}{\void}
|
|
|
|
notificiactions received from Frame Layout :
|
|
|
|
|
|
\membersection{cbGCUpdatesMgr::UpdateNow}\label{cbgcupdatesmgrupdatenow}
|
|
|
|
\func{void}{UpdateNow}{\void}
|
|
|
|
refreshes parts of the frame layout, which need an update
|
|
|