~wxGtkTreeModelNode()
{
- size_t count = m_children.GetCount();
+ size_t count = m_nodes.GetCount();
size_t i;
for (i = 0; i < count; i++)
{
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 );
{
m_notifier = NULL;
m_internal = NULL;
+
+ m_cols.DeleteContents( true );
}
static GtkTargetEntry gs_target;
#ifdef __WXGTK26__
if (!gtk_check_version(2,6,0))
- gtk_tree_view_set_fixed_height_mode( GTK_TREE_VIEW(m_treeview), TRUE );
+ {
+ bool fixed = (style & wxDV_VARIABLE_LINE_HEIGHT) == 0;
+ gtk_tree_view_set_fixed_height_mode( GTK_TREE_VIEW(m_treeview), fixed );
+ }
#endif
if (style & wxDV_MULTIPLE)
if (!wxDataViewCtrlBase::AssociateModel( model ))
return false;
+#ifdef __WXGTK26__
+ if (!gtk_check_version(2,6,0))
+ {
+ bool fixed = (((GetWindowStyle() & wxDV_VARIABLE_LINE_HEIGHT) == 0) || (model->IsVirtualListModel()));
+ gtk_tree_view_set_fixed_height_mode( GTK_TREE_VIEW(m_treeview), fixed );
+ }
+#endif
+
GtkWxTreeModel *gtk_model = wxgtk_tree_model_new();
m_internal = new wxDataViewCtrlInternal( this, model, gtk_model );
gtk_model->internal = m_internal;
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();
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)
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;
}
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;
}