[Gnucash-changes] Spruce up the delete window dialog to make it more HIG compliant.

Derek Atkins warlord at MIT.EDU
Wed Jul 20 17:19:46 EDT 2005


Quoting Chris Shoemaker <c.shoemaker at cox.net>:

> On Wed, Jul 20, 2005 at 04:09:38PM -0400, Derek Atkins wrote:
> > Quoting Chris Shoemaker <c.shoemaker at cox.net>:
> > 
> > > On Wed, Jul 20, 2005 at 03:49:03PM -0400, David Hampton wrote:
> > > > On Wed, 2005-07-20 at 15:03 -0400, Chris Shoemaker wrote:
> > > > 
> > > > > Incidentally, is this behavior specific to g2?  I've never noticed
> it
> > > > > in 1.x, but I imagine the register code hasn't changed much.
> > > > 
> > > > It was added in HEAD and pulled into g2.  Derek thinks the blank split
> > > > code should be rewritten.  I'm for reverting the change to the
> > > > transaction scrubbing code that created the problem.
> > > 
> > >   Nice to know I'm not imagining things.  The blank split code *is*
> > > particularly bad, but I think the effort to fix/rewrite it in the
> > > current register is probably 50% of the effort to rewrite the whole
> > > register.
> > > 
> > >   I looked pretty deeply into the register code a couple months ago
> > > and I don't remember seeing any relatioship between transaction
> > > scrubbing code and the transaction dirtying.  Could you point me
> > > toward what you mean?
> > 
> > xaccTransCommitEdit() calls xaccScrubTrans() which calls a bunch of other
> > functions that add the extra splits and dirty the books.
> > 
> > The problem is that the register creates the blank transaction and blank
> split
> > and then calls xaccTransBeginEdit() and xaccTransCommitEdit() immediately,
> > before the user has created any data in the split.  This causes the
> additional
> > split(s) to get created and commited, too, thereby dirtying the book.
> > 
> > What NEEDS to happen is that the register should call xaccTransBeginEdit()
> when
> > it creates the blank split/trans but _NOT_ call xaccTransCommitEdit()
> until
> > after the user actually enters data into the thing.
> 
> I disagree.  Moving the cursor through the register (which creates a
> blank split on each Transaction I move through) should not call
> xaccTransBeginEdit (and presumably xaccTransRollback) for each
> Transaction.  xaccTransBeginEdit should only be called once the user
> starts to change data.

Unfortunately the act of assigning the split to the transaction/account will
cause it to call Begin/Commit Edit.

> > I do NOT believe this is 50% of a register rewrite.  Far from it; I think
> it's
> > maybe a day or two of work for someone who doesn't know the register to
> move
> > that CommitEdit() and make sure the Begin's and Commit's are properly
> balanced
> > in all cases.
> > 
> > I am fairly confident that this will solve the problem.
> 
> If the Rollback doesn't dirty anything, then you may be right, but I
> don't think this is the best solution.  However, it may be better than
> what's there.

You don't need to call Rollback.  You just call xaccTransDelete() and then
xaccTransCommit() to delete it.  If you haven't made any changes then it
shouldn't dirty anything.

> -chris

-derek

-- 
       Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
       Member, MIT Student Information Processing Board  (SIPB)
       URL: http://web.mit.edu/warlord/    PP-ASEL-IA     N1NWH
       warlord at MIT.EDU                        PGP key available



More information about the gnucash-devel mailing list