AUDIT: r17628 - gnucash/trunk/src/register/ledger-core - Bug #393383, #426111: Stop the register from thinking that brand-new transactions are being edited in multiple registers. This appears to have been a special case that was being missed.

Charles Day cedayiv at cvs.gnucash.org
Thu Oct 16 22:50:37 EDT 2008


Author: cedayiv
Date: 2008-10-16 22:50:36 -0400 (Thu, 16 Oct 2008)
New Revision: 17628
Trac: http://svn.gnucash.org/trac/changeset/17628

Modified:
   gnucash/trunk/src/register/ledger-core/split-register.c
Log:
Bug #393383, #426111: Stop the register from thinking that brand-new transactions are being edited in multiple registers. This appears to have been a special case that was being missed.
BP


Modified: gnucash/trunk/src/register/ledger-core/split-register.c
===================================================================
--- gnucash/trunk/src/register/ledger-core/split-register.c	2008-10-16 03:02:20 UTC (rev 17627)
+++ gnucash/trunk/src/register/ledger-core/split-register.c	2008-10-17 02:50:36 UTC (rev 17628)
@@ -147,18 +147,35 @@
 gboolean
 gnc_split_register_begin_edit_or_warn(SRInfo *info, Transaction *trans)
 {
+  ENTER("info=%p, trans=%p", info, trans);
+
       if (!xaccTransIsOpen(trans)) {
           xaccTransBeginEdit(trans);
           /* This is now the pending transaction */
           info->pending_trans_guid = *xaccTransGetGUID(trans);
+          LEAVE("opened and marked pending");
           return FALSE;
       } else {
+        Split       *blank_split = xaccSplitLookup (&info->blank_split_guid,
+                                                    gnc_get_current_book ());
+        Transaction *blank_trans = xaccSplitGetParent (blank_split);
+
+        if (trans == blank_trans) {
+          /* This is a brand-new transaction. It is already
+           * open, so just mark it as pending. */
+          info->pending_trans_guid = *xaccTransGetGUID(trans);
+          LEAVE("already open, now pending.");
+          return FALSE;
+        } else {
           GtkWidget *parent = NULL;
           if (info->get_parent)
               parent = info->get_parent(info->user_data);
           gnc_error_dialog(parent, "%s", _("This transaction is already being edited in another register. Please finish editing it there first."));
+          LEAVE("already editing");
           return TRUE;
+        }
       }
+  LEAVE(" ");
 }
 
 void



More information about the gnucash-changes mailing list