+ wxSizerItem *item = node->GetData();
+
+ if (item->GetSizer() == sizer)
+ return m_children.DeleteNode( node );
+
+ node = node->GetNext();
+ }
+
+ return FALSE;
+}
+
+bool wxSizer::Remove( size_t index )
+{
+ wxCHECK_MSG( index < m_children.GetCount(),
+ FALSE,
+ _T("Remove index is out of range") );
+
+ wxSizerItemList::Node *node = m_children.Item( index );
+
+ wxCHECK_MSG( node, FALSE, _T("Failed to find child node") );
+
+ wxSizerItem *item = node->GetData();
+
+ if( item->IsWindow() )
+ item->GetWindow()->SetContainingSizer( NULL );
+
+ return m_children.DeleteNode( node );
+}
+
+bool wxSizer::Detach( wxSizer *sizer )
+{
+ wxASSERT_MSG( sizer, _T("Detaching NULL sizer") );
+
+ wxSizerItemList::Node *node = m_children.GetFirst();
+ while (node)
+ {
+ wxSizerItem *item = node->GetData();
+
+ if (item->GetSizer() == sizer)