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 <jpwhit...@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