New payees bug
Jack
ostroffjh at users.sourceforge.net
Sat Jul 22 18:16:35 BST 2023
On 2023.07.22 03:57, Thomas Baumgart via KMyMoney-devel wrote:
> On Samstag, 22. Juli 2023 03:08:26 CEST Jeremy Whiting via
> KMyMoney-devel wrote:
>
> > Ok, I think I've hit the edge of my code following for the evening.
>> Everything in NewTransactionEditor looks right. It calls
>> KMyMoneyUtils::newPayee which works right and finds the index of the
>> new payee, etc. The only problem is that after it's done the
>> NewTransactionEditor gets destructed for some reason... It gets
>> destructed when you click Yes on the Create new payee question
>> dialog. If you click No instead it leaves the editor, but clears out
>> the value for the payee as expected. I'm not sure why the editor is
>> getting destructed in the LedgerView.
>
> This is caused by LedgerView::reset() which is called when the
> underlying engine state (represented by the models) changes.
> LedgerConcatenateModels suppresses any signals during the update of
> the engine objects and simply calls beginResetModel() and
> endResetModel() when the objects in the engine are changed.
> EndResetModel() calls LedgerView::reset() in the course of action.
>
> I added that to reduce the number of sort operations on the ledgers
> when multiple (as in many) objects get changed as part of an action
> (e.g. mark transactions as cleared). Maybe, this was not the best
> choice. I know it's more of a sledge hammer method but works well.
> It's just not ideal for what we try to solve here.
>
> So far, I have no immediate solution to this problem. But I am sure,
> we will find one.
I know I'm a bit out of my area here, but would it be a feasible idea
to just start a countdown timer when a sort would normally be done?
Only when the timer finishes would the sort actually be done. If some
action would trigger a sort in the meantime - just reset the counter.
As I read your description of the issue, I think this would avoid the
need to suppress signals. If a signal is sent to resort - just restart
the timer.
Jack
>
> > On Fri, Jul 21, 2023 at 5:31 PM Jeremy Whiting <jpwhiting at kde.org>
> wrote:
> > > Hello,
> > >
> > > I think there's a recent-ish bug in master. I'm not sure when I
> started
> > > hitting it since I don't often add new payees. But lately when
> adding a new
> > > transaction if you enter a new name for the payee it pops up the
> dialog "Do
> > > you want to add <foo> as a new payee?" which is how it always has
> been.
> > > However lately, clicking yes seems to add the payee to the
> payees, but also
> > > clears out the entered transaction data. It used to just add the
> payee and
> > > let you continue to edit the rest of the transaction details.
> > >
> > > Clicking No clears everything just like it used to.
> > >
> > > With a quick dive into the code I *think* it might be a bug around
> > > PayeeCreator::createPayee. I think when it calls
> KMyMoneyUtils::newPayee
> > > that works so it drops into the else block, but then somehow
> doesn't get an
> > > index from m_comboBox->findData (maybe because the combobox
> didn't get
> > > notified of the new payee?) so it clears everything out.
> > >
> > > I'll dive in and see if that's the cause and see if I can find
> out how to
> > > get it added to the combobox maybe, but wanted to point it out in
> case it's
> > > already known and maybe in progress somewhere.
> > >
> > > thanks,
> > > Jeremy
More information about the KMyMoney-devel
mailing list