[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