Disable sort when adding row to GTkTreeSrore



Hello,

 

I’m migrate my aplication from GTK 1.2 to 2.10. So I try to use GtkTreeStore and GtkTreeView. The fist task is to show the file system hierarchy (and I want to filter this list, but it will be a second question). When the user choose to expand one directory, I must add a lot of rows. To preserve times, i try to detach the model from the tree, and to disable the sort. The result is that it goes faster but i got this error message

 

Gtk_CRITICAL ** : gtk_tree_store_sort : assertion tree_store->default_sort_func != NULL failed

 

Gtk_CRITICAL ** : gtk_tree_store_sort_iter_changed : assertion tree_store->default_sort_func != NULL failed

 

 

Is there an other way to disable the sort ?

 

Thank you

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

// creating the interface

GtkTreeStore *p_TreeStore = gtk_tree_store_new(1, G_TYPE_STRING);

GtkTreeSortable *p_Sortable = GTK_TREE_SORTABLE(p_TreeStore),

GtkTreeView *p_TreeView = gtk_tree_new_with_model (GTK_TREE_MODEL(p_TreeStore));

 

 

gtk_tree_sortable_set_default_sort_func(p_Sortable, my_sort_function, GINT_TO_POINTER(0), NULL);

...

GtkCellRenderer *p_Renderer = gtk_cell_text_new ();

GtkTreeViewColumn *p_Column = gtk_tree_view_column_new_with_attributes (NULL, p_Renderer, “text”, 0, NULL);

Gtk_tree_view_append_column(p_TreeView, p_Column);

 

gtk_tree_view_column_set_title ( p_Column, “File List”);

gtk_tree_view_column_set_clickable ( p_Column, TRUE);

gtk_tree_view_column_set_sort_column(p_Column, 0);

gtk_tree_sortable_set_sort_column_id(p_Sortable, GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, GTK_ASCENDING);

 

gtk_tree_view_set_headers_visible (p_TreeView, TRUE);

gtk_tree_view_set_expander_column (p_TreeView, 0);

gtk_tree_view_enable_tree_lines(p_TreeView, TRUE);

 

g_signal_connect(G_OBJECT(p_TreeView), “row_expanded”, G_CALLBACK(cb_expand), my_filter);

g_signal_connect(G_OBJECT(p_TreeView), “row_collapsed”, G_CALLBACK(cb_collapse), my_filter);

 

// the callback

 void cb_expand(GtkTreeView * p_TreeView, GtkTreeIter * p_Iter, GtkTrePath * path, gpointer user_data)

 {

    GtkTreeStore * p_TreeStore = GTK_TREE_STORE(gtk_tree_view_get_model(p_TreeView);

 

   GtkTreeSortable * p_Sortable = GTK_TREE_SORTABLE(p_TreeStore);

  

   gtk_tree_storable_set_default_sort_func(p_Sortable, NULL, NULL, NULL);

 

   g_object_ref(p_TreeStore);

   gtk_tree_set_model(p_TreeView, NULL);

....

  // expand the tree by adding rows

....

  gtk_tree_set_model(p_TreeView, NULL);

   g_object_unref(p_TreeStroe);.

 

   gtk_tree_sortable_set_default_sort_func(p_Sortable, my_sort_function, GINT_TO_POINTER(0), NULL);

}

 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]