r20628 - gnucash/trunk/src/gnome-utils - Properly handle owner add events in the owner tree view

Geert Janssens gjanssens at code.gnucash.org
Wed May 11 17:52:20 EDT 2011


Author: gjanssens
Date: 2011-05-11 17:52:20 -0400 (Wed, 11 May 2011)
New Revision: 20628
Trac: http://svn.gnucash.org/trac/changeset/20628

Modified:
   gnucash/trunk/src/gnome-utils/gnc-tree-model-owner.c
Log:
Properly handle owner add events in the owner tree view

Modified: gnucash/trunk/src/gnome-utils/gnc-tree-model-owner.c
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-tree-model-owner.c	2011-05-11 21:52:12 UTC (rev 20627)
+++ gnucash/trunk/src/gnome-utils/gnc-tree-model-owner.c	2011-05-11 21:52:20 UTC (rev 20628)
@@ -1058,35 +1058,40 @@
           entity, event_type, model, ed);
     priv = GNC_TREE_MODEL_OWNER_GET_PRIVATE(model);
 
-    if (qof_instance_get_book (entity) != priv->book)
+    qofOwnerSetEntity (&owner, entity);
+    if (gncOwnerGetType(&owner) != priv->owner_type)
     {
-        LEAVE("not in this book");
+        LEAVE("model type and owner type differ");
         return;
     }
-    qofOwnerSetEntity (&owner, entity);
-    if (!gnc_tree_model_owner_get_iter_from_owner (model, &owner, &iter))
+
+    if (qof_instance_get_book (entity) != priv->book)
     {
-        LEAVE("not in this model");
+        LEAVE("not in this book");
         return;
     }
+
     /* What to do, that to do. */
     switch (event_type)
     {
     case QOF_EVENT_ADD:
         /* Tell the filters/views where the new owner was added. */
         DEBUG("add owner %p (%s)", &owner, gncOwnerGetName(&owner));
+        /* First update our copy of the owner list. This isn't done automatically */
+        priv->owner_list = gncBusinessGetOwnerList (priv->book,
+                           gncOwnerTypeToQofIdType(priv->owner_type), TRUE);
+        increment_stamp(model);
+        if (!gnc_tree_model_owner_get_iter_from_owner (model, &owner, &iter))
+        {
+            LEAVE("can't generate iter");
+            break;
+        }
         path = gnc_tree_model_owner_get_path(GTK_TREE_MODEL(model), &iter);
         if (!path)
         {
             DEBUG("can't generate path");
             break;
         }
-        increment_stamp(model);
-        if (!gnc_tree_model_owner_get_iter(GTK_TREE_MODEL(model), &iter, path))
-        {
-            DEBUG("can't generate iter");
-            break;
-        }
         gtk_tree_model_row_inserted (GTK_TREE_MODEL(model), path, &iter);
         break;
 
@@ -1108,17 +1113,17 @@
 
     case QOF_EVENT_MODIFY:
         DEBUG("modify  owner %p (%s)", &owner, gncOwnerGetName(&owner));
+        if (!gnc_tree_model_owner_get_iter_from_owner (model, &owner, &iter))
+        {
+            LEAVE("can't generate iter");
+            return;
+        }
         path = gnc_tree_model_owner_get_path(GTK_TREE_MODEL(model), &iter);
         if (!path)
         {
             DEBUG("can't generate path");
             break;
         }
-        if (!gnc_tree_model_owner_get_iter(GTK_TREE_MODEL(model), &iter, path))
-        {
-            DEBUG("can't generate iter");
-            break;
-        }
         gtk_tree_model_row_changed(GTK_TREE_MODEL(model), path, &iter);
         break;
 



More information about the gnucash-changes mailing list