[Gnucash-changes] r13926 - gnucash/trunk - Add an alternate
mode for handling the dirty state of instances and
Chris Shoemaker
c.shoemaker at cox.net
Sun May 7 22:07:48 EDT 2006
On Sat, May 06, 2006 at 02:01:16AM -0400, David Hampton wrote:
> Modified: gnucash/trunk/lib/libqof/qof/qofutil.c
> ===================================================================
> --- gnucash/trunk/lib/libqof/qof/qofutil.c 2006-05-06 01:27:40 UTC (rev 13925)
> +++ gnucash/trunk/lib/libqof/qof/qofutil.c 2006-05-06 06:01:14 UTC (rev 13926)
> @@ -269,6 +269,7 @@
> void (*on_free)(QofInstance *))
> {
> QofBackend * be;
> + gboolean dirty = inst->dirty;
>
> /* See if there's a backend. If there is, invoke it. */
> be = qof_book_get_backend(inst->book);
> @@ -300,6 +301,9 @@
> on_free(inst);
> return TRUE;
> }
> +
> + if (dirty && qof_get_alt_dirty_mode())
> + qof_collection_mark_dirty(inst->entity.collection);
> if (on_done)
> on_done(inst);
> return TRUE;
Why is this after the "on_free" case? Deleting an object will result
in calling qof_commit_edit_part2() with do_free set, so this
qof_collection_mark_dirty() will never be reached.
So, if the collection isn't marked dirty on committing a deleted
object, and if the freeing functions, which call
qof_instance_release(), which calls qof_entity_release(), which calls
qof_collection_remove() also no longer dirties the collections, then I
don't see how the book would be dirtied when an object is deleted.
Somehow, sometime, deleting an object needs to result in a dirty book,
even though it contain collections of only clean instances (entities).
-chris
More information about the gnucash-devel
mailing list