From 96fdbb60f1d25a1f77b011c432b71ee152c15ed7 Mon Sep 17 00:00:00 2001 From: Ron Lee Date: Mon, 30 Dec 2002 15:26:47 +0000 Subject: [PATCH] Ok, so we don't need the extra bool at all, we can just zero the sizer pointer in wxSizerItem. :-) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18461 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/sizer.h | 11 ++++------- src/common/sizer.cpp | 12 +++--------- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/include/wx/sizer.h b/include/wx/sizer.h index c3741cfedc..412f6a2f54 100644 --- a/include/wx/sizer.h +++ b/include/wx/sizer.h @@ -50,6 +50,10 @@ public: virtual void DeleteWindows(); + // Enable deleting the SizerItem without destroying the contained sizer. + void DetachSizer() + { m_sizer = 0; } + virtual wxSize GetSize(); virtual wxSize CalcMin(); virtual void SetDimension( wxPoint pos, wxSize size ); @@ -82,8 +86,6 @@ public: { m_border = border; } void Show ( bool show ) { m_show = show; } - void SetDeleteItem( bool deleteItem = TRUE ) - { m_deleteItem = deleteItem; } wxWindow *GetWindow() const { return m_window; } @@ -124,11 +126,6 @@ protected: // is shrinked. it is safer to preserve initial value. float m_ratio; - // If TRUE, and the item is a sizer, delete it when the - // sizeritem is destroyed. Not used for any other type - // of item right now. - bool m_deleteItem; - wxObject *m_userData; private: diff --git a/src/common/sizer.cpp b/src/common/sizer.cpp index f227e41b17..79da84f99d 100644 --- a/src/common/sizer.cpp +++ b/src/common/sizer.cpp @@ -52,7 +52,6 @@ wxSizerItem::wxSizerItem( int width, int height, int option, int flag, int borde , m_border( border ) , m_flag( flag ) , m_show( TRUE ) // Cannot be changed - , m_deleteItem( FALSE ) // unused for spacer , m_userData( userData ) { SetRatio( m_size ); @@ -66,7 +65,6 @@ wxSizerItem::wxSizerItem( wxWindow *window, int option, int flag, int border, wx , m_border( border ) , m_flag( flag ) , m_show( TRUE ) - , m_deleteItem( FALSE ) // currently unused for window , m_userData( userData ) { // aspect ratio calculated from initial size @@ -83,7 +81,6 @@ wxSizerItem::wxSizerItem( wxSizer *sizer, int option, int flag, int border, wxOb , m_flag( flag ) , m_show( TRUE ) , m_ratio( 0 ) - , m_deleteItem( TRUE ) // we delete sizer items by default. , m_userData( userData ) { // m_minSize is calculated later @@ -92,12 +89,9 @@ wxSizerItem::wxSizerItem( wxSizer *sizer, int option, int flag, int border, wxOb wxSizerItem::~wxSizerItem() { - // User data is bound to the sizeritem, always delete it. if (m_userData) delete m_userData; - - // To be able to Detach a sizer, we must be able to veto its deletion here. - if (m_deleteItem && m_sizer) + if (m_sizer) delete m_sizer; } @@ -373,7 +367,7 @@ bool wxSizer::Detach( wxSizer *sizer ) wxSizerItem *item = (wxSizerItem*)node->Data(); if (item->GetSizer() == sizer) { - item->SetDeleteItem( FALSE ); + item->DetachSizer(); m_children.DeleteNode( node ); return TRUE; } @@ -390,7 +384,7 @@ bool wxSizer::Detach( int pos ) wxNode *node = m_children.Nth( pos ); if (!node) return FALSE; - ( (wxSizerItem*)node->Data() )->SetDeleteItem( FALSE ); + ( (wxSizerItem*)node->Data() )->DetachSizer(); m_children.DeleteNode( node ); return TRUE; -- 2.45.2