X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/344ed1f3861d5acdbc0e6486456136cbc47fc013..65d990fb214d0298d17eda7bae6b0dbaa830f62e:/src/gtk/dataview.cpp diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp index e2381d9910..dcaa4c1af9 100644 --- a/src/gtk/dataview.cpp +++ b/src/gtk/dataview.cpp @@ -3572,6 +3572,8 @@ wxDataViewCtrl::~wxDataViewCtrl() if (m_notifier) GetModel()->RemoveNotifier( m_notifier ); + m_cols.Clear(); + // remove the model from the GtkTreeView before it gets destroyed by the // wxDataViewCtrlBase's dtor gtk_tree_view_set_model( GTK_TREE_VIEW(m_treeview), NULL ); @@ -3583,6 +3585,8 @@ void wxDataViewCtrl::Init() { m_notifier = NULL; m_internal = NULL; + + m_cols.DeleteContents( true ); } static GtkTargetEntry gs_target; @@ -3783,6 +3787,28 @@ bool wxDataViewCtrl::PrependColumn( wxDataViewColumn *col ) return true; } +bool wxDataViewCtrl::InsertColumn( unsigned int pos, wxDataViewColumn *col ) +{ + if (!wxDataViewCtrlBase::InsertColumn(pos,col)) + return false; + + m_cols.Insert( pos, col ); + +#ifdef __WXGTK26__ + if (!gtk_check_version(2,6,0)) + { + if (gtk_tree_view_column_get_sizing( GTK_TREE_VIEW_COLUMN(col->GetGtkHandle()) ) != + GTK_TREE_VIEW_COLUMN_FIXED) + gtk_tree_view_set_fixed_height_mode( GTK_TREE_VIEW(m_treeview), FALSE ); + } +#endif + + gtk_tree_view_insert_column( GTK_TREE_VIEW(m_treeview), + GTK_TREE_VIEW_COLUMN(col->GetGtkHandle()), pos ); + + return true; +} + unsigned int wxDataViewCtrl::GetColumnCount() const { return m_cols.GetCount(); @@ -3795,7 +3821,7 @@ wxDataViewColumn* wxDataViewCtrl::GetColumn( unsigned int pos ) const return NULL; 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; if (GTK_TREE_VIEW_COLUMN(col->GetGtkHandle()) == gtk_col) @@ -3812,9 +3838,7 @@ bool wxDataViewCtrl::DeleteColumn( wxDataViewColumn *column ) gtk_tree_view_remove_column( GTK_TREE_VIEW(m_treeview), GTK_TREE_VIEW_COLUMN(column->GetGtkHandle()) ); - m_cols.remove( column ); - - delete column; + m_cols.DeleteObject( column ); return true; } @@ -3822,14 +3846,14 @@ bool wxDataViewCtrl::DeleteColumn( wxDataViewColumn *column ) bool wxDataViewCtrl::ClearColumns() { 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; gtk_tree_view_remove_column( GTK_TREE_VIEW(m_treeview), GTK_TREE_VIEW_COLUMN(col->GetGtkHandle()) ); } - m_cols.clear(); + m_cols.Clear(); return true; }