Index: src/gnome-utils/gnc-tree-model-price.c
===================================================================
--- src/gnome-utils/gnc-tree-model-price.c	(revision 17292)
+++ src/gnome-utils/gnc-tree-model-price.c	(working copy)
@@ -1336,16 +1336,23 @@
   /* Tag the new item as inserted. */
   gtk_tree_model_row_inserted (tree_model, path, iter);
 
-  /*  */
   gtk_tree_path_up(path);
-  while (gtk_tree_path_get_depth(path) != 0) {
-      if (gtk_tree_model_get_iter(tree_model, &tmp_iter, path)) {
-          gtk_tree_model_row_changed(tree_model, path, &tmp_iter);
-          if (gtk_tree_model_iter_n_children(tree_model, &tmp_iter) == 1) {
-              gtk_tree_model_row_has_child_toggled(tree_model, path, &tmp_iter);
-          }
-      }
+  if (gtk_tree_path_get_depth(path) > 0 &&
+      gtk_tree_model_get_iter(tree_model, &tmp_iter, path)) {
+    /* Signal the change to the parent. */
+    gtk_tree_model_row_changed(tree_model, path, &tmp_iter);
+
+    /* Is this the parent's first child? */
+    if (gtk_tree_model_iter_n_children(tree_model, &tmp_iter) == 1)
+        gtk_tree_model_row_has_child_toggled(tree_model, path, &tmp_iter);
+
+    /* Signal any other ancestors. */
+    gtk_tree_path_up(path);
+    while (gtk_tree_path_get_depth(path) > 0 &&
+           gtk_tree_model_get_iter(tree_model, &tmp_iter, path)) {
+      gtk_tree_model_row_changed(tree_model, path, &tmp_iter);
       gtk_tree_path_up(path);
+    }
   }
   gtk_tree_path_free(path);
 
