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