]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/sizer.cpp
Use our own getters and properties for wxVisualAttributes
[wxWidgets.git] / src / common / sizer.cpp
index 66a15254319762ba59fa1d35d1abc88041db13be..b4ae33b5a74b76291f83d83210f92b21b43ee220 100644 (file)
@@ -103,12 +103,10 @@ wxSizerItem::wxSizerItem()
     m_proportion = 0;
     m_border = 0;
     m_flag = 0;
     m_proportion = 0;
     m_border = 0;
     m_flag = 0;
-
-    m_kind = Item_None;
 }
 
 // window item
 }
 
 // window item
-void wxSizerItem::SetWindow(wxWindow *window)
+void wxSizerItem::DoSetWindow(wxWindow *window)
 {
     wxCHECK_RET( window, _T("NULL window in wxSizerItem::SetWindow()") );
 
 {
     wxCHECK_RET( window, _T("NULL window in wxSizerItem::SetWindow()") );
 
@@ -130,16 +128,17 @@ wxSizerItem::wxSizerItem(wxWindow *window,
                          int flag,
                          int border,
                          wxObject* userData)
                          int flag,
                          int border,
                          wxObject* userData)
-           : m_proportion(proportion),
+           : m_kind(Item_None),
+             m_proportion(proportion),
              m_border(border),
              m_flag(flag),
              m_userData(userData)
 {
              m_border(border),
              m_flag(flag),
              m_userData(userData)
 {
-    SetWindow(window);
+    DoSetWindow(window);
 }
 
 // sizer item
 }
 
 // sizer item
-void wxSizerItem::SetSizer(wxSizer *sizer)
+void wxSizerItem::DoSetSizer(wxSizer *sizer)
 {
     m_kind = Item_Sizer;
     m_sizer = sizer;
 {
     m_kind = Item_Sizer;
     m_sizer = sizer;
@@ -150,19 +149,21 @@ wxSizerItem::wxSizerItem(wxSizer *sizer,
                          int flag,
                          int border,
                          wxObject* userData)
                          int flag,
                          int border,
                          wxObject* userData)
-           : m_proportion(proportion),
+           : m_kind(Item_None),
+             m_sizer(NULL),
+             m_proportion(proportion),
              m_border(border),
              m_flag(flag),
              m_ratio(0.0),
              m_userData(userData)
 {
              m_border(border),
              m_flag(flag),
              m_ratio(0.0),
              m_userData(userData)
 {
-    SetSizer(sizer);
+    DoSetSizer(sizer);
 
     // m_minSize is set later
 }
 
 // spacer item
 
     // m_minSize is set later
 }
 
 // spacer item
-void wxSizerItem::SetSpacer(const wxSize& size)
+void wxSizerItem::DoSetSpacer(const wxSize& size)
 {
     m_kind = Item_Spacer;
     m_spacer = new wxSizerSpacer(size);
 {
     m_kind = Item_Spacer;
     m_spacer = new wxSizerSpacer(size);
@@ -176,19 +177,25 @@ wxSizerItem::wxSizerItem(int width,
                          int flag,
                          int border,
                          wxObject* userData)
                          int flag,
                          int border,
                          wxObject* userData)
-           : m_minSize(width, height), // minimal size is the initial size
+           : m_kind(Item_None),
+             m_sizer(NULL),
+             m_minSize(width, height), // minimal size is the initial size
              m_proportion(proportion),
              m_border(border),
              m_flag(flag),
              m_userData(userData)
 {
              m_proportion(proportion),
              m_border(border),
              m_flag(flag),
              m_userData(userData)
 {
-    SetSpacer(width, height);
+    DoSetSpacer(wxSize(width, height));
 }
 
 wxSizerItem::~wxSizerItem()
 {
     delete m_userData;
 }
 
 wxSizerItem::~wxSizerItem()
 {
     delete m_userData;
+    Free();
+}
 
 
+void wxSizerItem::Free()
+{
     switch ( m_kind )
     {
         case Item_None:
     switch ( m_kind )
     {
         case Item_None:
@@ -210,6 +217,8 @@ wxSizerItem::~wxSizerItem()
         default:
             wxFAIL_MSG( _T("unexpected wxSizerItem::m_kind") );
     }
         default:
             wxFAIL_MSG( _T("unexpected wxSizerItem::m_kind") );
     }
+
+    m_kind = Item_None;
 }
 
 wxSize wxSizerItem::GetSpacer() const
 }
 
 wxSize wxSizerItem::GetSpacer() const
@@ -578,13 +587,9 @@ bool wxSizer::Remove( int index )
 
     wxCHECK_MSG( node, false, _T("Failed to find child node") );
 
 
     wxCHECK_MSG( node, false, _T("Failed to find child node") );
 
-    wxSizerItem *item = node->GetData();
-
-    if ( item->IsWindow() )
-        item->GetWindow()->SetContainingSizer( NULL );
-
-    delete item;
+    delete node->GetData();
     m_children.Erase( node );
     m_children.Erase( node );
+
     return true;
 }
 
     return true;
 }
 
@@ -621,7 +626,6 @@ bool wxSizer::Detach( wxWindow *window )
 
         if (item->GetWindow() == window)
         {
 
         if (item->GetWindow() == window)
         {
-            item->GetWindow()->SetContainingSizer( NULL );
             delete item;
             m_children.Erase( node );
             return true;
             delete item;
             m_children.Erase( node );
             return true;
@@ -646,8 +650,6 @@ bool wxSizer::Detach( int index )
 
     if ( item->IsSizer() )
         item->DetachSizer();
 
     if ( item->IsSizer() )
         item->DetachSizer();
-    else if ( item->IsWindow() )
-        item->GetWindow()->SetContainingSizer( NULL );
 
     delete item;
     m_children.Erase( node );
 
     delete item;
     m_children.Erase( node );
@@ -666,8 +668,7 @@ bool wxSizer::Replace( wxWindow *oldwin, wxWindow *newwin, bool recursive )
 
         if (item->GetWindow() == oldwin)
         {
 
         if (item->GetWindow() == oldwin)
         {
-            item->GetWindow()->SetContainingSizer( NULL );
-            item->SetWindow(newwin);
+            item->AssignWindow(newwin);
             newwin->SetContainingSizer( this );
             return true;
         }
             newwin->SetContainingSizer( this );
             return true;
         }
@@ -695,9 +696,7 @@ bool wxSizer::Replace( wxSizer *oldsz, wxSizer *newsz, bool recursive )
 
         if (item->GetSizer() == oldsz)
         {
 
         if (item->GetSizer() == oldsz)
         {
-            wxSizer *old = item->GetSizer();
-            item->SetSizer(newsz);
-            delete old;
+            item->AssignSizer(newsz);
             return true;
         }
         else if (recursive && item->IsSizer())
             return true;
         }
         else if (recursive && item->IsSizer())