gtk+ r20198 - in trunk: . gtk



Author: matthiasc
Date: Tue May 27 23:16:06 2008
New Revision: 20198
URL: http://svn.gnome.org/viewvc/gtk+?rev=20198&view=rev

Log:
        Bug 485218 - Strange warning encountered

        * gtk/gtktreemodelsort.c (gtk_tree_model_sort_row_inserted):
        (gtk_tree_model_sort_convert_child_iter_to_iter):
        (gtk_tree_model_sort_build_level): Better warnings. Patch
        by Kristian Rietveld.



Modified:
   trunk/ChangeLog
   trunk/gtk/gtktreemodelsort.c

Modified: trunk/gtk/gtktreemodelsort.c
==============================================================================
--- trunk/gtk/gtktreemodelsort.c	(original)
+++ trunk/gtk/gtktreemodelsort.c	Tue May 27 23:16:06 2008
@@ -630,9 +630,10 @@
 
       if (level->array->len < gtk_tree_path_get_indices (s_path)[i])
 	{
-	  g_warning ("A node was inserted with a parent that's not in the tree.\n"
+	  g_warning ("%s: A node was inserted with a parent that's not in the tree.\n"
 		     "This possibly means that a GtkTreeModel inserted a child node\n"
-		     "before the parent was inserted.");
+		     "before the parent was inserted.",
+		     G_STRLOC);
 	  goto done;
 	}
 
@@ -2080,7 +2081,12 @@
 
   path = gtk_tree_model_sort_convert_child_path_to_path (tree_model_sort, child_path);
   gtk_tree_path_free (child_path);
-  g_return_if_fail (path != NULL);
+
+  if (!path)
+    {
+      g_warning ("%s: The conversion of the child path to a GtkTreeModel sort path failed", G_STRLOC);
+      return;
+    }
 
   gtk_tree_model_get_iter (GTK_TREE_MODEL (tree_model_sort), sort_iter, path);
   gtk_tree_path_free (path);
@@ -2259,7 +2265,30 @@
 	  if (gtk_tree_model_iter_next (tree_model_sort->child_model, &iter) == FALSE &&
 	      i < length - 1)
 	    {
-	      g_warning ("There is a discrepancy between the sort model and the child model.");
+	      if (parent_level)
+	        {
+	          GtkTreePath *level;
+		  gchar *str;
+
+		  level = gtk_tree_model_sort_elt_get_path (parent_level,
+							    parent_elt);
+		  str = gtk_tree_path_to_string (level);
+		  gtk_tree_path_free (level);
+
+		  g_warning ("%s: There is a discrepancy between the sort model "
+			     "and the child model.  The child model is "
+			     "advertising a wrong length for level %s:.",
+			     G_STRLOC, str);
+		  g_free (str);
+		}
+	      else
+	        {
+		  g_warning ("%s: There is a discrepancy between the sort model "
+			     "and the child model.  The child model is "
+			     "advertising a wrong length for the root level.",
+			     G_STRLOC);
+		}
+
 	      return;
 	    }
 	}



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