wxSizerItem::~wxSizerItem()
{
- if (m_userData)
- delete m_userData;
- if (m_sizer)
+ delete m_userData;
+
+ if ( m_window )
+ {
+ m_window->SetContainingSizer(NULL);
+ }
+ else // we must be a sizer
+ {
delete m_sizer;
+ }
}
wxSizer::wxSizer()
: m_minSize( wxSize( 0, 0 ) )
{
- m_children.DeleteContents( true );
}
wxSizer::~wxSizer()
{
- Clear();
+ WX_CLEAR_LIST(wxSizerItemList, m_children);
}
void wxSizer::Add( wxWindow *window, int proportion, int flag, int border, wxObject* userData )
{
wxASSERT_MSG( sizer, _T("Removing NULL sizer") );
- wxSizerItemList::Node *node = m_children.GetFirst();
+ wxSizerItemList::compatibility_iterator node = m_children.GetFirst();
while (node)
{
wxSizerItem *item = node->GetData();
if (item->GetSizer() == sizer)
- return m_children.DeleteNode( node );
+ {
+ delete item;
+ m_children.Erase( node );
+ return true;
+ }
node = node->GetNext();
}
false,
_T("Remove index is out of range") );
- wxSizerItemList::Node *node = m_children.Item( index );
+ wxSizerItemList::compatibility_iterator node = m_children.Item( index );
wxCHECK_MSG( node, false, _T("Failed to find child node") );
if( item->IsWindow() )
item->GetWindow()->SetContainingSizer( NULL );
- return m_children.DeleteNode( node );
+ delete item;
+ m_children.Erase( node );
+ return true;
}
bool wxSizer::Detach( wxSizer *sizer )
{
wxASSERT_MSG( sizer, _T("Detaching NULL sizer") );
- wxSizerItemList::Node *node = m_children.GetFirst();
+ wxSizerItemList::compatibility_iterator node = m_children.GetFirst();
while (node)
{
wxSizerItem *item = node->GetData();
if (item->GetSizer() == sizer)
{
item->DetachSizer();
- return m_children.DeleteNode( node );
+ delete item;
+ m_children.Erase( node );
+ return true;
}
node = node->GetNext();
}
{
wxASSERT_MSG( window, _T("Detaching NULL window") );
- wxSizerItemList::Node *node = m_children.GetFirst();
+ wxSizerItemList::compatibility_iterator node = m_children.GetFirst();
while (node)
{
wxSizerItem *item = node->GetData();
if (item->GetWindow() == window)
{
item->GetWindow()->SetContainingSizer( NULL );
- return m_children.DeleteNode( node );
+ delete item;
+ m_children.Erase( node );
+ return true;
}
node = node->GetNext();
}
false,
_T("Detach index is out of range") );
- wxSizerItemList::Node *node = m_children.Item( index );
+ wxSizerItemList::compatibility_iterator node = m_children.Item( index );
wxCHECK_MSG( node, false, _T("Failed to find child node") );
else if( item->IsWindow() )
item->GetWindow()->SetContainingSizer( NULL );
- return m_children.DeleteNode( node );
+ delete item;
+ m_children.Erase( node );
+ return true;
}
void wxSizer::Clear( bool delete_windows )
{
// First clear the ContainingSizer pointers
- wxSizerItemList::Node *node = m_children.GetFirst();
+ wxSizerItemList::compatibility_iterator node = m_children.GetFirst();
while (node)
{
wxSizerItem *item = node->GetData();
DeleteWindows();
// Now empty the list
- m_children.Clear();
+ WX_CLEAR_LIST(wxSizerItemList, m_children);
}
void wxSizer::DeleteWindows()
{
- wxSizerItemList::Node *node = m_children.GetFirst();
+ wxSizerItemList::compatibility_iterator node = m_children.GetFirst();
while (node)
{
wxSizerItem *item = node->GetData();
// Is it our immediate child?
- wxSizerItemList::Node *node = m_children.GetFirst();
+ wxSizerItemList::compatibility_iterator node = m_children.GetFirst();
while (node)
{
wxSizerItem *item = node->GetData();
// Is it our immediate child?
- wxSizerItemList::Node *node = m_children.GetFirst();
+ wxSizerItemList::compatibility_iterator node = m_children.GetFirst();
while (node)
{
wxSizerItem *item = node->GetData();
bool wxSizer::DoSetItemMinSize( size_t index, int width, int height )
{
- wxSizerItemList::Node *node = m_children.Item( index );
+ wxSizerItemList::compatibility_iterator node = m_children.Item( index );
wxCHECK_MSG( node, false, _T("Failed to find child node") );
{
wxASSERT_MSG( window, _T("Show for NULL window") );
- wxSizerItemList::Node *node = m_children.GetFirst();
+ wxSizerItemList::compatibility_iterator node = m_children.GetFirst();
while (node)
{
wxSizerItem *item = node->GetData();
{
wxASSERT_MSG( sizer, _T("Show for NULL sizer") );
- wxSizerItemList::Node *node = m_children.GetFirst();
+ wxSizerItemList::compatibility_iterator node = m_children.GetFirst();
while (node)
{
wxSizerItem *item = node->GetData();
void wxSizer::ShowItems( bool show )
{
- wxSizerItemList::Node *node = m_children.GetFirst();
+ wxSizerItemList::compatibility_iterator node = m_children.GetFirst();
while (node)
{
node->GetData()->Show( show );
bool wxSizer::IsShown( wxWindow *window ) const
{
- wxSizerItemList::Node *node = m_children.GetFirst();
+ wxSizerItemList::compatibility_iterator node = m_children.GetFirst();
while (node)
{
wxSizerItem *item = node->GetData();
bool wxSizer::IsShown( wxSizer *sizer ) const
{
- wxSizerItemList::Node *node = m_children.GetFirst();
+ wxSizerItemList::compatibility_iterator node = m_children.GetFirst();
while (node)
{
wxSizerItem *item = node->GetData();
int i = r * ncols + c;
if (i < nitems)
{
- wxSizerItemList::Node *node = m_children.Item( i );
+ wxSizerItemList::compatibility_iterator node = m_children.Item( i );
wxASSERT_MSG( node, _T("Failed to find SizerItemList node") );
int w = 0;
int h = 0;
- wxSizerItemList::Node *node = m_children.GetFirst();
+ wxSizerItemList::compatibility_iterator node = m_children.GetFirst();
while (node)
{
wxSizerItem *item = node->GetData();
int i = r * ncols + c;
if (i < nitems)
{
- wxSizerItemList::Node *node = m_children.Item( i );
+ wxSizerItemList::compatibility_iterator node = m_children.Item( i );
wxASSERT_MSG( node, _T("Failed to find node") );
for( s = m_colWidths.GetCount(), i = 0; i < s; ++i )
m_colWidths[ i ] = -1;
- wxSizerItemList::Node *node = m_children.GetFirst();
+ wxSizerItemList::compatibility_iterator node = m_children.GetFirst();
i = 0;
while (node)
wxPoint pt( m_position );
- wxSizerItemList::Node *node = m_children.GetFirst();
+ wxSizerItemList::compatibility_iterator node = m_children.GetFirst();
while (node)
{
wxSizerItem *item = node->GetData();
// Find how long each stretch unit needs to be
int stretchSize = 1;
- wxSizerItemList::Node *node = m_children.GetFirst();
+ wxSizerItemList::compatibility_iterator node = m_children.GetFirst();
while (node)
{
int maxX = 0;
int maxY = 0;
- wxWindowList::Node *node = m_notebook->GetChildren().GetFirst();
+ wxWindowList::compatibility_iterator node = m_notebook->GetChildren().GetFirst();
while (node)
{
wxWindow *item = node->GetData();