pointer in wxSizerItem. :-)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18461
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
virtual void DeleteWindows();
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 );
virtual wxSize GetSize();
virtual wxSize CalcMin();
virtual void SetDimension( wxPoint pos, wxSize size );
{ m_border = border; }
void Show ( bool show )
{ m_show = show; }
{ m_border = border; }
void Show ( bool show )
{ m_show = show; }
- void SetDeleteItem( bool deleteItem = TRUE )
- { m_deleteItem = deleteItem; }
wxWindow *GetWindow() const
{ return m_window; }
wxWindow *GetWindow() const
{ return m_window; }
// is shrinked. it is safer to preserve initial value.
float m_ratio;
// 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:
wxObject *m_userData;
private:
, m_border( border )
, m_flag( flag )
, m_show( TRUE ) // Cannot be changed
, m_border( border )
, m_flag( flag )
, m_show( TRUE ) // Cannot be changed
- , m_deleteItem( FALSE ) // unused for spacer
, m_userData( userData )
{
SetRatio( m_size );
, m_userData( userData )
{
SetRatio( m_size );
, m_border( border )
, m_flag( flag )
, m_show( TRUE )
, 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
, m_userData( userData )
{
// aspect ratio calculated from initial size
, m_flag( flag )
, m_show( TRUE )
, m_ratio( 0 )
, 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
, m_userData( userData )
{
// m_minSize is calculated later
wxSizerItem::~wxSizerItem()
{
wxSizerItem::~wxSizerItem()
{
- // User data is bound to the sizeritem, always delete it.
if (m_userData)
delete m_userData;
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)
wxSizerItem *item = (wxSizerItem*)node->Data();
if (item->GetSizer() == sizer)
{
wxSizerItem *item = (wxSizerItem*)node->Data();
if (item->GetSizer() == sizer)
{
- item->SetDeleteItem( FALSE );
m_children.DeleteNode( node );
return TRUE;
}
m_children.DeleteNode( node );
return TRUE;
}
wxNode *node = m_children.Nth( pos );
if (!node) return FALSE;
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;
m_children.DeleteNode( node );
return TRUE;