diff --git a/src/app-utils/gnc-ui-util.c b/src/app-utils/gnc-ui-util.c index 008a13b661..b2a2297781 100644 --- a/src/app-utils/gnc-ui-util.c +++ b/src/app-utils/gnc-ui-util.c @@ -203,8 +203,12 @@ gnc_get_current_book (void) void gnc_set_current_book_tax_name (const gchar *tax_name) { - kvp_frame_set_string (qof_book_get_slots (gnc_get_current_book()), + QofBook* current_book = gnc_get_current_book(); + + qof_book_begin_edit(current_book); + kvp_frame_set_string (qof_book_get_slots (current_book), "book/tax_US/name", tax_name); + qof_book_commit_edit(current_book); } const gchar * diff --git a/src/backend/sql/gnc-book-sql.c b/src/backend/sql/gnc-book-sql.c index 3c159413d6..7de5f4ecd0 100644 --- a/src/backend/sql/gnc-book-sql.c +++ b/src/backend/sql/gnc-book-sql.c @@ -149,8 +149,10 @@ load_single_book( GncSqlBackend* be, GncSqlRow* row ) pBook = gnc_book_new(); } + qof_book_begin_edit( pBook ); gnc_sql_load_object( be, row, GNC_ID_BOOK, pBook, col_table ); gnc_sql_slots_load( be, QOF_INSTANCE(pBook) ); + qof_book_commit_edit( pBook ); qof_instance_mark_clean( QOF_INSTANCE(pBook) ); } diff --git a/src/libqof/qof/qofbook.c b/src/libqof/qof/qofbook.c index 6ed3caadfc..3009a04838 100644 --- a/src/libqof/qof/qofbook.c +++ b/src/libqof/qof/qofbook.c @@ -461,6 +461,36 @@ gboolean qof_book_use_trading_accounts (const QofBook *book) return FALSE; } +void +qof_book_begin_edit (QofBook *book) +{ + qof_begin_edit(&book->inst); +} + +static void commit_err (QofInstance *inst, QofBackendError errcode) +{ + PERR ("Failed to commit: %d", errcode); +// gnc_engine_signal_commit_error( errcode ); +} + +#if 0 +static void lot_free(QofInstance* inst) +{ + GNCLot* lot = GNC_LOT(inst); + + gnc_lot_free(lot); +} +#endif + +static void noop (QofInstance *inst) {} + +void +qof_book_commit_edit(QofBook *book) +{ + if (!qof_commit_edit (QOF_INSTANCE(book))) return; + qof_commit_edit_part2 (&book->inst, commit_err, noop, noop/*lot_free*/); +} + /* QofObject function implementation and registration */ gboolean qof_book_register (void) { diff --git a/src/libqof/qof/qofbook.h b/src/libqof/qof/qofbook.h index c7e1656b67..cf399e68c8 100644 --- a/src/libqof/qof/qofbook.h +++ b/src/libqof/qof/qofbook.h @@ -278,6 +278,9 @@ gboolean qof_book_equal (const QofBook *book_1, const QofBook *book_2); */ gint64 qof_book_get_counter (const QofBook *book, const char *counter_name); +void qof_book_begin_edit(QofBook *book); +void qof_book_commit_edit(QofBook *book); + /** deprecated */ #define qof_book_get_guid(X) qof_entity_get_guid (QOF_INSTANCE(X))