From 3fe6e98689dc004935dfe94411b4927fd014ab28 Mon Sep 17 00:00:00 2001
From: Kristian Rietveld <kris@gtk.org>
Date: Mon, 24 Oct 2005 19:01:36 +0000
Subject: [PATCH] emitting row-has-child-toggled when the level is not in the
 cache does not

2005-10-24  Kristian Rietveld  <kris@gtk.org>

	* gtk/gtktreemodelsort.c (gtk_tree_model_sort_row_inserted): emitting
	row-has-child-toggled when the level is not in the cache does not
	make sense.  (This bug probably crept in during the early stages
	of GtkTreeModelSort when there wasn't a correct row-has-child-toggled
	implementation yet),
	(gtk_tree_model_sort_real_unref_node): only get the child iter
	when we will actually also use it.
---
 ChangeLog              | 10 ++++++++++
 ChangeLog.pre-2-10     | 10 ++++++++++
 gtk/gtktreemodelsort.c | 26 ++++++--------------------
 3 files changed, 26 insertions(+), 20 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index faa63b5cbd..59175ee84c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2005-10-24  Kristian Rietveld  <kris@gtk.org>
+
+	* gtk/gtktreemodelsort.c (gtk_tree_model_sort_row_inserted): emitting
+	row-has-child-toggled when the level is not in the cache does not
+	make sense.  (This bug probably crept in during the early stages
+	of GtkTreeModelSort when there wasn't a correct row-has-child-toggled
+	implementation yet),
+	(gtk_tree_model_sort_real_unref_node): only get the child iter
+	when we will actually also use it.
+
 2005-10-22  Michael Natterer  <mitch@imendio.com>
 
 	* gtk/gtktreeview.c (gtk_tree_view_scroll_to_cell): check for the
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index faa63b5cbd..59175ee84c 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,3 +1,13 @@
+2005-10-24  Kristian Rietveld  <kris@gtk.org>
+
+	* gtk/gtktreemodelsort.c (gtk_tree_model_sort_row_inserted): emitting
+	row-has-child-toggled when the level is not in the cache does not
+	make sense.  (This bug probably crept in during the early stages
+	of GtkTreeModelSort when there wasn't a correct row-has-child-toggled
+	implementation yet),
+	(gtk_tree_model_sort_real_unref_node): only get the child iter
+	when we will actually also use it.
+
 2005-10-22  Michael Natterer  <mitch@imendio.com>
 
 	* gtk/gtktreeview.c (gtk_tree_view_scroll_to_cell): check for the
diff --git a/gtk/gtktreemodelsort.c b/gtk/gtktreemodelsort.c
index ac32fc4110..20b0f53239 100644
--- a/gtk/gtktreemodelsort.c
+++ b/gtk/gtktreemodelsort.c
@@ -700,22 +700,6 @@ gtk_tree_model_sort_row_inserted (GtkTreeModel          *s_model,
 
       if (!elt->children)
 	{
-	  GtkTreePath *tmppath;
-	  GtkTreeIter  tmpiter;
-
-	  tmpiter.stamp = tree_model_sort->stamp;
-	  tmpiter.user_data = level;
-	  tmpiter.user_data2 = elt;
-
-	  tmppath = gtk_tree_model_get_path (GTK_TREE_MODEL (data), &tmpiter);
-	  if (tmppath)
-	    {
-	      gtk_tree_model_row_has_child_toggled (GTK_TREE_MODEL (data),
-						    tmppath,
-						    &tmpiter);
-	      gtk_tree_path_free (tmppath);
-	    }
-
 	  /* not covering this signal */
 	  goto done;
 	}
@@ -1286,7 +1270,6 @@ gtk_tree_model_sort_real_unref_node (GtkTreeModel *tree_model,
 				     gboolean      propagate_unref)
 {
   GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *) tree_model;
-  GtkTreeIter child_iter;
   SortLevel *level;
   SortElt *elt;
 
@@ -1294,10 +1277,13 @@ gtk_tree_model_sort_real_unref_node (GtkTreeModel *tree_model,
   g_return_if_fail (GTK_TREE_MODEL_SORT (tree_model)->child_model != NULL);
   g_return_if_fail (GTK_TREE_MODEL_SORT (tree_model)->stamp == iter->stamp);
 
-  GET_CHILD_ITER (tree_model, &child_iter, iter);
-
   if (propagate_unref)
-    gtk_tree_model_unref_node (GTK_TREE_MODEL_SORT (tree_model)->child_model, &child_iter);
+    {
+      GtkTreeIter child_iter;
+
+      GET_CHILD_ITER (tree_model, &child_iter, iter);
+      gtk_tree_model_unref_node (GTK_TREE_MODEL_SORT (tree_model)->child_model, &child_iter);
+    }
 
   level = iter->user_data;
   elt = iter->user_data2;
-- 
GitLab