%
% 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

