Use wxList::DeleteContents() to delete columns

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53776 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2008-05-27 09:26:09 +00:00
parent b3a3c9d82c
commit ef11ea71bb

View File

@@ -3572,6 +3572,8 @@ wxDataViewCtrl::~wxDataViewCtrl()
if (m_notifier) if (m_notifier)
GetModel()->RemoveNotifier( m_notifier ); GetModel()->RemoveNotifier( m_notifier );
m_cols.Clear();
// remove the model from the GtkTreeView before it gets destroyed by the // remove the model from the GtkTreeView before it gets destroyed by the
// wxDataViewCtrlBase's dtor // wxDataViewCtrlBase's dtor
gtk_tree_view_set_model( GTK_TREE_VIEW(m_treeview), NULL ); gtk_tree_view_set_model( GTK_TREE_VIEW(m_treeview), NULL );
@@ -3583,6 +3585,8 @@ void wxDataViewCtrl::Init()
{ {
m_notifier = NULL; m_notifier = NULL;
m_internal = NULL; m_internal = NULL;
m_cols.DeleteContents( true );
} }
static GtkTargetEntry gs_target; static GtkTargetEntry gs_target;
@@ -3817,7 +3821,7 @@ wxDataViewColumn* wxDataViewCtrl::GetColumn( unsigned int pos ) const
return NULL; return NULL;
wxDataViewColumnList::const_iterator iter; wxDataViewColumnList::const_iterator iter;
for (iter = m_cols.begin(); iter != m_cols.end(); iter++) for (iter = m_cols.begin(); iter != m_cols.end(); ++iter)
{ {
wxDataViewColumn *col = *iter; wxDataViewColumn *col = *iter;
if (GTK_TREE_VIEW_COLUMN(col->GetGtkHandle()) == gtk_col) if (GTK_TREE_VIEW_COLUMN(col->GetGtkHandle()) == gtk_col)
@@ -3834,9 +3838,7 @@ bool wxDataViewCtrl::DeleteColumn( wxDataViewColumn *column )
gtk_tree_view_remove_column( GTK_TREE_VIEW(m_treeview), gtk_tree_view_remove_column( GTK_TREE_VIEW(m_treeview),
GTK_TREE_VIEW_COLUMN(column->GetGtkHandle()) ); GTK_TREE_VIEW_COLUMN(column->GetGtkHandle()) );
m_cols.remove( column ); m_cols.DeleteObject( column );
delete column;
return true; return true;
} }
@@ -3844,14 +3846,14 @@ bool wxDataViewCtrl::DeleteColumn( wxDataViewColumn *column )
bool wxDataViewCtrl::ClearColumns() bool wxDataViewCtrl::ClearColumns()
{ {
wxDataViewColumnList::iterator iter; wxDataViewColumnList::iterator iter;
for (iter = m_cols.begin(); iter != m_cols.end(); iter++) for (iter = m_cols.begin(); iter != m_cols.end(); ++iter)
{ {
wxDataViewColumn *col = *iter; wxDataViewColumn *col = *iter;
gtk_tree_view_remove_column( GTK_TREE_VIEW(m_treeview), gtk_tree_view_remove_column( GTK_TREE_VIEW(m_treeview),
GTK_TREE_VIEW_COLUMN(col->GetGtkHandle()) ); GTK_TREE_VIEW_COLUMN(col->GetGtkHandle()) );
} }
m_cols.clear(); m_cols.Clear();
return true; return true;
} }