diff options
author | Kristian Rietveld <kris@gtk.org> | 2011-05-09 10:29:54 +0200 |
---|---|---|
committer | Kristian Rietveld <kris@gtk.org> | 2011-08-22 21:30:30 +0200 |
commit | df0fcfb940f05a40fe69dcd86fed60cfd8312391 (patch) | |
tree | ac44b95589b5865e8f065358f1ea995eeb3a6f6b /gtk/gtktreemodelsort.c | |
parent | e9c960929b1b9deb003f6f2c62d65878d9b23a75 (diff) | |
download | gtk+-df0fcfb940f05a40fe69dcd86fed60cfd8312391.tar.gz |
In sort model also emit row-deleted after updating the data structures
Diffstat (limited to 'gtk/gtktreemodelsort.c')
-rw-r--r-- | gtk/gtktreemodelsort.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/gtk/gtktreemodelsort.c b/gtk/gtktreemodelsort.c index 9a59a802d3..df24a6a4cf 100644 --- a/gtk/gtktreemodelsort.c +++ b/gtk/gtktreemodelsort.c @@ -901,12 +901,6 @@ gtk_tree_model_sort_row_deleted (GtkTreeModel *s_model, elt = SORT_ELT (iter.user_data2); offset = elt->offset; - /* we _need_ to emit ::row_deleted before we start unreffing the node - * itself. This is because of the row refs, which start unreffing nodes - * when we emit ::row_deleted - */ - gtk_tree_model_row_deleted (GTK_TREE_MODEL (data), path); - gtk_tree_model_get_iter (GTK_TREE_MODEL (data), &iter, path); while (elt->ref_count > 0) @@ -919,7 +913,9 @@ gtk_tree_model_sort_row_deleted (GtkTreeModel *s_model, * Careful, root level is not cleaned up in increment stamp. */ gtk_tree_model_sort_increment_stamp (tree_model_sort); + gtk_tree_model_row_deleted (GTK_TREE_MODEL (data), path); gtk_tree_path_free (path); + if (level == tree_model_sort->priv->root) { gtk_tree_model_sort_free_level (tree_model_sort, @@ -929,8 +925,6 @@ gtk_tree_model_sort_row_deleted (GtkTreeModel *s_model, return; } - gtk_tree_model_sort_increment_stamp (tree_model_sort); - /* Remove the row */ for (i = 0; i < level->array->len; i++) if (elt->offset == g_array_index (level->array, SortElt, i).offset) @@ -948,6 +942,9 @@ gtk_tree_model_sort_row_deleted (GtkTreeModel *s_model, elt->children->parent_elt_index = i; } + gtk_tree_model_sort_increment_stamp (tree_model_sort); + gtk_tree_model_row_deleted (GTK_TREE_MODEL (data), path); + gtk_tree_path_free (path); } |