summaryrefslogtreecommitdiff
path: root/gtk/gtktreemodelsort.c
diff options
context:
space:
mode:
authorKristian Rietveld <kris@gtk.org>2011-05-09 10:29:54 +0200
committerKristian Rietveld <kris@gtk.org>2011-08-22 21:30:30 +0200
commitdf0fcfb940f05a40fe69dcd86fed60cfd8312391 (patch)
treeac44b95589b5865e8f065358f1ea995eeb3a6f6b /gtk/gtktreemodelsort.c
parente9c960929b1b9deb003f6f2c62d65878d9b23a75 (diff)
downloadgtk+-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.c13
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);
}