]>
Commit | Line | Data |
---|---|---|
499b2ed8 JS |
1 | % |
2 | % automatically generated by HelpGen $Revision$ from | |
4cbc57f0 | 3 | % gcupdatesmgr.h at 21/Jan/02 21:14:19 |
499b2ed8 JS |
4 | % |
5 | ||
6 | ||
7 | \section{\class{cbGCUpdatesMgr}}\label{cbgcupdatesmgr} | |
8 | ||
9 | ||
4cbc57f0 JS |
10 | This class implements optimized logic for refreshing |
11 | the areas of frame layout that actually need to be updated. | |
12 | It is used as the default updates manager by wxFrameLayout. | |
13 | ||
14 | It is called 'Garbage Collecting' updates manager because | |
15 | its implementation tries to find out dependencies between bars, | |
16 | and to order them into a 'hierarchy'. This hierarchical sorting resembles | |
17 | the implementation of heap-garbage collectors, which resolve | |
18 | dependencies between references. | |
19 | ||
20 | Example: there are situations where the order in which the user | |
21 | moves windows does matter. | |
22 | ||
23 | \begin{verbatim} | |
24 | case 1) | |
25 | ------ --- | |
26 | | A | |B| | |
27 | ------ ---> | | | |
28 | --- --- ------ | |
29 | |B| | A | | |
30 | | | ------ | |
31 | --- | |
32 | (future) | |
33 | (past) | |
34 | \end{verbatim} | |
35 | ||
36 | Past/future positions of A and B windows completely overlap, i.e. | |
37 | depend on each other, and there is no solution for | |
38 | moving the windows without refreshing both of them | |
39 | -- we have a cyclic dependency here. The garbage collection algorithm will | |
40 | find this cyclic dependecy and will force refresh after movement. | |
41 | ||
42 | \begin{verbatim} | |
43 | case 2) | |
44 | ||
45 | ------ | |
46 | | A | | |
47 | ------ ---> | |
48 | --- | |
49 | |B| ------ | |
50 | | | | A | | |
51 | --- ------ | |
52 | --- | |
53 | |B| | |
54 | | | | |
55 | --- | |
56 | ||
57 | (future) | |
58 | (past) | |
59 | \end{verbatim} | |
60 | ||
61 | In this case past/future positions do not overlap, so | |
62 | it is enough only to move windows without refreshing them. | |
63 | Garbage collection will 'notice' this. | |
64 | ||
65 | There is also a third case, when overlapping is partial. | |
66 | In this case the refreshing can also be avoided by | |
67 | moving windows in the order of 'most-dependant' towards the | |
68 | 'least-dependent'. GC handles this automatically, by | |
69 | sorting windows by their dependency-level (or 'hierarchy'). | |
70 | ||
71 | See garbagec.h for more details of this method; garbagec.h/cpp | |
72 | implement sorting of generic dependencies and does not deal | |
73 | with graphical objects directly. | |
74 | ||
75 | Summary: garbage collection improves performance when complex or large | |
76 | windows are moved around, by reducing the number of repaints. It also helps | |
77 | to avoid dirty non-client areas of moved windows | |
78 | in some special cases of 'overlapping anomalies'. | |
79 | ||
499b2ed8 JS |
80 | \wxheading{Derived from} |
81 | ||
82 | \helpref{cbSimpleUpdatesMgr}{cbsimpleupdatesmgr} | |
83 | ||
4cbc57f0 JS |
84 | \wxheading{Include files} |
85 | ||
6e8515a3 | 86 | <wx/fl/gcupdatesmgr.h> |
4cbc57f0 | 87 | |
499b2ed8 JS |
88 | \wxheading{Data structures} |
89 | ||
90 | \latexignore{\rtfignore{\wxheading{Members}}} | |
91 | ||
92 | ||
93 | \membersection{cbGCUpdatesMgr::cbGCUpdatesMgr}\label{cbgcupdatesmgrcbgcupdatesmgr} | |
94 | ||
95 | \func{}{cbGCUpdatesMgr}{\void} | |
96 | ||
4cbc57f0 JS |
97 | Default constructor. |
98 | ||
499b2ed8 JS |
99 | |
100 | \func{}{cbGCUpdatesMgr}{\param{wxFrameLayout* }{pPanel}} | |
101 | ||
4cbc57f0 JS |
102 | Constructor, taking a frame layout. |
103 | ||
499b2ed8 JS |
104 | |
105 | \membersection{cbGCUpdatesMgr::AddItem}\label{cbgcupdatesmgradditem} | |
106 | ||
107 | \func{void}{AddItem}{\param{wxList\& }{itemList}, \param{cbBarInfo* }{pBar}, \param{cbDockPane* }{pPane}, \param{wxRect\& }{curBounds}, \param{wxRect\& }{prevBounds}} | |
108 | ||
4cbc57f0 JS |
109 | Internal function for repositioning items. |
110 | ||
499b2ed8 JS |
111 | |
112 | \membersection{cbGCUpdatesMgr::DoRepositionItems}\label{cbgcupdatesmgrdorepositionitems} | |
113 | ||
114 | \func{void}{DoRepositionItems}{\param{wxList\& }{items}} | |
115 | ||
4cbc57f0 JS |
116 | Internal function for repositioning items. |
117 | ||
499b2ed8 JS |
118 | |
119 | \membersection{cbGCUpdatesMgr::OnStartChanges}\label{cbgcupdatesmgronstartchanges} | |
120 | ||
121 | \func{void}{OnStartChanges}{\void} | |
122 | ||
4cbc57f0 | 123 | Receives notifications from the frame layout. |
499b2ed8 JS |
124 | |
125 | ||
126 | \membersection{cbGCUpdatesMgr::UpdateNow}\label{cbgcupdatesmgrupdatenow} | |
127 | ||
128 | \func{void}{UpdateNow}{\void} | |
129 | ||
4cbc57f0 | 130 | Refreshes the parts of the frame layout which need an update. |
499b2ed8 | 131 |