Bug 241162 - Ledgers View weird display issue
Summary: Ledgers View weird display issue
Status: RESOLVED FIXED
Alias: None
Product: kmymoney
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: openSUSE Linux
: NOR normal
Target Milestone: ---
Assignee: KMyMoney Devel Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-06-09 02:07 UTC by allan
Modified: 2010-06-22 19:20 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments
snapshot taken to show case 2) of corrupted display (133.06 KB, image/png)
2010-06-19 13:58 UTC, allan
Details

Note You need to log in before you can comment on or make changes to this bug.
Description allan 2010-06-09 02:07:44 UTC
Version:           unspecified (using KDE 4.3.5) 
OS:                Linux

This started off being pretty weird, but has become even weirder!

I'd imported a QIF file and opened a transaction.  While it was open, I happened to click on another entry.  For some reason that now escapes me, this kmy file is denominated in Canadian Dollars, and what happens is that the price/currency editor opens.  I clicked to cancel it, and the original screen display is now a combination of the normal screen with the opened transaction superimposed over it.  It's possible to repeat the sequence and have the appearance of several transactions open at the same time.  In fact, it's not just the appearance of several items being ope,, they all appear to respond as though they are all actually open.  Clicking to cancel the open transaction does not rectify the display, but switching to another account and back restores normality.

Closing the file then reopening it, and reimporting a qif file and repeating the above gets the same result.

If KMM is closed and reopened with a different, non-foreign currency involved, there is no problem.  However, once the problem situation has been produced, it will show in a single currency file.

The imported file happened to be an investment file, so I thought to try a checking account.  To avoid disturbing the present situation, I tried v1.03 and opened a checking account there.  Trying the same sequence did not produce a problem, so, while still in v1.03, I switched to an investment account, and immediately it opened it was showing the same superimposition that v3.98 showed, even though I hadn't touched the display in any way.  Switching back to the checking account showed it to be as normal, and returning to the investment account showed it still to be corrupted.

Reproducible: Always

Steps to Reproduce:
1) Open a multi-currency file.
2) Import an investment file.
3) Double click to edit a transaction.
4) Click on another transaction.
5) Click No on the close dialog box.
6) Cancel the Exchange/Price editor.
7) The corruption is now showing.
8) Click cancel, which does not clear it.
9) Go to 3) and repeat.

a) Close the file without saving and reopen it.
b) Reopen the account in question.
c) The display of an open transaction appears on an otherwise blank ledger view!
d) Close KMM and reopen and all back to normal, unless....

Happens in both 3.98 and 1.03.

Actual Results:  
As described.

Expected Results:  
Clicking No in step 5) should just close the opened transaction.

Haven't been asked for the app. version no.  It's Version 3.98.2-svn1132481 (and 1.03)
Comment 1 Cristian Oneț 2010-06-19 13:04:49 UTC
Could you attach a screen shot of the UI anomaly that you are experiencing since the description is pretty long and I got lost somewhere in the middle of it and I still don't know what to look for. Thanks!
Comment 2 allan 2010-06-19 13:56:47 UTC
Just tried again and find that the results vary depending upon which transactions are selected.  I imported an investment file of 9 transactions.

1) Double click to open the top one, then click on a lower one.  No problem.  The first one closes and the second one is highlighted.
2) Double click on the second from top to open it, then click on the next lower one.  Symptoms as described above, and I'll add a screen shot.
3) Double click on lowest item to open it, then click a higher one.  Exchange Rate/Price Editor dialog opens.  Cancel it and similar situation to the above.  Cancel the edit and KMM crashes!

Here's the BT

Application: KMyMoney (kmymoney), signal: Segmentation fault
[KCrash Handler]
#6  0x09850948 in ?? ()
#7  0x0826b0ea in InvestTransactionEditor::~InvestTransactionEditor (this=0xb5f06374, __in_chrg=<value optimized out>) at /home/aga/Plugin/kmymoney/kmymoney/dialogs/investtransactioneditor.cpp:96
#8  0x08090ee8 in KMyMoneyApp::deleteTransactionEditor (this=0x8789cf8) at /home/aga/Plugin/kmymoney/kmymoney/kmymoney.cpp:5082
#9  0x080ce6ba in KMyMoneyApp::slotTransactionsCancel (this=0x8789cf8) at /home/aga/Plugin/kmymoney/kmymoney/kmymoney.cpp:5123
#10 0x080e1f24 in KMyMoneyApp::qt_metacall (this=0x8789cf8, _c=InvokeMetaMethod, _id=80, _a=0xbfebb2a8) at /home/aga/Plugin/kmymoney/build/kmymoney/kmymoney.moc:478
#11 0xb5e28864 in QMetaObject::activate (sender=0x8831d58, from_signal_index=5, to_signal_index=6, argv=0xbfebb2a8) at kernel/qobject.cpp:3113
#12 0xb5e28d41 in QMetaObject::activate (sender=0x8831d58, m=0xb5cb2108, from_local_signal_index=1, to_local_signal_index=2, argv=0xbfebb2a8) at kernel/qobject.cpp:3207
#13 0xb54520c5 in QAction::triggered (this=0x8831d58, _t1=false) at .moc/release-shared/moc_qaction.cpp:236
#14 0xb54536f2 in QAction::activate (this=0x8831d58, event=Trigger) at kernel/qaction.cpp:1167
#15 0xb58e68e0 in trigger (this=<value optimized out>) at ../../src/gui/kernel/qaction.h:203
#16 QToolButton::nextCheckState (this=<value optimized out>) at widgets/qtoolbutton.cpp:1135
#17 0xb57fdaa7 in QAbstractButtonPrivate::click (this=0x8f412e8) at widgets/qabstractbutton.cpp:525
#18 0xb57fdd86 in QAbstractButton::mouseReleaseEvent (this=0x8f41268, e=0xbfebb870) at widgets/qabstractbutton.cpp:1115
#19 0xb58e6ded in QToolButton::mouseReleaseEvent (this=0x8f41268, e=0xbfebb870) at widgets/qtoolbutton.cpp:709
#20 0xb54afbac in QWidget::event (this=0x8f41268, event=0xbfebb870) at kernel/qwidget.cpp:7554
#21 0xb57fbc40 in QAbstractButton::event (this=0x8f41268, e=0x9826190) at widgets/qabstractbutton.cpp:1077
#22 0xb58e983c in QToolButton::event (this=0x8f41268, event=0xbfebb870) at widgets/qtoolbutton.cpp:1151
#23 0xb54588fc in QApplicationPrivate::notify_helper (this=0x86eb650, receiver=0x8f41268, e=0xbfebb870) at kernel/qapplication.cpp:4065
#24 0xb5460bbb in QApplication::notify (this=0x8f41268, receiver=0x8f41268, e=0xbfebb870) at kernel/qapplication.cpp:3767
#25 0xb69cf521 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#26 0xb5e1232e in QCoreApplication::notifyInternal (this=0x86eb5c0, receiver=0x8f41268, event=0xbfebb870) at kernel/qcoreapplication.cpp:610
#27 0xb545fbdc in sendSpontaneousEvent (event=<value optimized out>, receiver=<value optimized out>) at ../../src/corelib/kernel/qcoreapplication.h:216
#28 QApplicationPrivate::sendMouseEvent (event=<value optimized out>, receiver=<value optimized out>) at kernel/qapplication.cpp:2924
#29 0xb54d080a in QETWidget::translateMouseEvent (this=0x8a8cc50, event=0xbfebce9c) at kernel/qapplication_x11.cpp:4409
#30 0xb54cfd7e in QApplication::x11ProcessEvent (this=0x86eb5c0, event=0xbfebce9c) at kernel/qapplication_x11.cpp:3428
#31 0xb54fab68 in x11EventSourceDispatch (s=0x86ee870, callback=0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#32 0xb49084c2 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#33 0xb490bd98 in ?? () from /usr/lib/libglib-2.0.so.0
#34 0xb490bebe in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#35 0xb5e3e011 in QEventDispatcherGlib::processEvents (this=0x86d0f58, flags=...) at kernel/qeventdispatcher_glib.cpp:407
#36 0xb54fa29a in QGuiEventDispatcherGlib::processEvents (this=0x86d0f58, flags=...) at kernel/qguieventdispatcher_glib.cpp:202
#37 0xb5e1098d in QEventLoop::processEvents (this=0xbfebd154, flags=) at kernel/qeventloop.cpp:149
#38 0xb5e10dd9 in QEventLoop::exec (this=0xbfebd154, flags=...) at kernel/qeventloop.cpp:201
#39 0xb5e13270 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:888
#40 0xb5458774 in QApplication::exec () at kernel/qapplication.cpp:3525
#41 0x0808eab7 in main (argc=1, argv=0xbfebd5d4) at /home/aga/Plugin/kmymoney/kmymoney/main.cpp:277
Comment 3 allan 2010-06-19 13:58:54 UTC
Created attachment 48139 [details]
snapshot taken to show case 2) of corrupted display
Comment 4 Cristian Oneț 2010-06-20 12:26:43 UTC
With the help of the screenshot I managed to reproduce it. This only happens when using not using the transaction form. I'll take care of this.
Comment 5 Cristian Oneț 2010-06-20 20:03:17 UTC
SVN commit 1140447 by conet:

BUG: 241162
Fixed the following issues in the ledger:
1. If the transactions are edited directly in the register update the row heights after editing to display the transaction correctly in view mode
2. When a transaction can't be entered (enter is disabled) don't permit ending the edit by pressing 'No' (save the transaction) in the 'Are you sure you want to cancel editing the transaction dialog' that appears when focus is lost while editing - this one cause the bugs described in the report.

I couldn't reproduce the crash but I'm sure that it's also fixed. Can you test that?

 M  +8 -2      kmymoney.cpp  
 M  +7 -0      views/kgloballedgerview.cpp  
 M  +6 -0      widgets/transaction.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1140447
Comment 6 allan 2010-06-20 21:40:50 UTC
No, it's still crashing and the corrupted screen still shows as described above.

And I am on Version 3.98.2-svn1140447.  The BT looks the same as the one I provided.  Don't forget the Exchange Rate/Price Editor dialog seems to be a factor.
Comment 7 Cristian Oneț 2010-06-21 08:59:20 UTC
So canceling the exchange rate editor when entering a transaction trough the 'Are you sure you want to cancel editing the transaction dialog' still needs to be fixed. Thanks!
Comment 8 allan 2010-06-21 11:42:09 UTC
(In reply to comment #7)
> So canceling the exchange rate editor when entering a transaction trough the
> 'Are you sure you want to cancel editing the transaction dialog' still needs to
> be fixed. Thanks!

Not exactly, I don't see that dialog here.  I double click to edit, click another item and get the Exchange Rate/Price Editor.  I cancel that (OK seems OK), then, and I've just found a slight variation, click on another item and a crash ensues.  Here's the BT, in case it's different.

Application: KMyMoney (kmymoney), signal: Segmentation fault
[KCrash Handler]
#6  0xb53c0009 in __dynamic_cast () from /usr/lib/libstdc++.so.6
#7  0x082741e7 in InvestTransactionEditor::createTransaction (this=0x94d0c00, t=..., torig=..., sorig=...) at /home/aga/Plugin/kmymoney/kmymoney/dialogs/investtransactioneditor.cpp:979
#8  0x083745b3 in TransactionEditor::enterTransactions (this=0x94d0c00, newId=..., askForSchedule=true, suppressBalanceWarnings=false)
    at /home/aga/Plugin/kmymoney/kmymoney/dialogs/transactioneditor.cpp:480
#9  0x080cea0a in KMyMoneyApp::slotTransactionsEnter (this=0x8831db8) at /home/aga/Plugin/kmymoney/kmymoney/kmymoney.cpp:5142
#10 0x080cee22 in KMyMoneyApp::slotTransactionsCancelOrEnter (this=0x8831db8, okToSelect=@0xbfe9e42f) at /home/aga/Plugin/kmymoney/kmymoney/kmymoney.cpp:5166
#11 0x080e1ffe in KMyMoneyApp::qt_metacall (this=0x8831db8, _c=InvokeMetaMethod, _id=81, _a=0xbfe9e238) at /home/aga/Plugin/kmymoney/build/kmymoney/kmymoney.moc:479
#12 0xb5ee9864 in QMetaObject::activate (sender=0x8824d68, from_signal_index=32, to_signal_index=32, argv=0xbfe9e238) at kernel/qobject.cpp:3113
#13 0xb5eea585 in QMetaObject::activate (sender=0x8824d68, m=0x86b0ed8, local_signal_index=5, argv=0xbfe9e238) at kernel/qobject.cpp:3187
#14 0x08162153 in KGlobalLedgerView::cancelOrEndEdit (this=0x8824d68, _t1=@0xbfe9e42f) at /home/aga/Plugin/kmymoney/build/kmymoney/views/kgloballedgerview.moc:264
#15 0x081746af in slotAboutToSelectItem (okToSelect=@0x35, item=0x0, this=0x8824d68) at /home/aga/Plugin/kmymoney/kmymoney/views/kgloballedgerview.cpp:287
#16 KGlobalLedgerView::qt_metacall (okToSelect=@0x35, item=0x0, this=0x8824d68) at /home/aga/Plugin/kmymoney/build/kmymoney/views/kgloballedgerview.moc:220
#17 0xb5ee9864 in QMetaObject::activate (sender=0x8f20bf0, from_signal_index=125, to_signal_index=125, argv=0xbfe9e3e4) at kernel/qobject.cpp:3113
#18 0xb5eea585 in QMetaObject::activate (sender=0x8f20bf0, m=0x86bb8ac, local_signal_index=4, argv=0xbfe9e3e4) at kernel/qobject.cpp:3187
#19 0x083a63f9 in KMyMoneyRegister::Register::aboutToSelectItem (this=0x8f20bf0, _t1=0x9a8c098, _t2=@0xbfe9e42f) at /home/aga/Plugin/kmymoney/build/kmymoney/widgets/register.moc:187
#20 0x083aa6ba in KMyMoneyRegister::Register::selectItem (this=0x8f20bf0, item=0x9a8c098, dontChangeSelections=false) at /home/aga/Plugin/kmymoney/kmymoney/widgets/register.cpp:1512
#21 0x083ab0b9 in KMyMoneyRegister::Register::selectItem (this=0x8f20bf0, row=1, col=4) at /home/aga/Plugin/kmymoney/kmymoney/widgets/register.cpp:1427
#22 0x083abf98 in KMyMoneyRegister::Register::qt_metacall (this=0x8f20bf0, _c=InvokeMetaMethod, _id=132, _a=0xbfe9e5a4) at /home/aga/Plugin/kmymoney/build/kmymoney/widgets/register.moc:147
#23 0xb5ee9864 in QMetaObject::activate (sender=0x8f20bf0, from_signal_index=98, to_signal_index=98, argv=0xbfe9e5a4) at kernel/qobject.cpp:3113
#24 0xb5eea585 in QMetaObject::activate (sender=0x8f20bf0, m=0xb5d7f890, local_signal_index=9, argv=0xbfe9e5a4) at kernel/qobject.cpp:3187
#25 0xb5acd06d in QTableWidget::cellClicked (this=0x8f20bf0, _t1=1, _t2=4) at .moc/release-shared/moc_qtablewidget.cpp:268
#26 0xb5ad3930 in QTableWidgetPrivate::_q_emitItemClicked (this=0x8f1fdc8, index=...) at itemviews/qtablewidget.cpp:1617
#27 0xb5ad5f90 in QTableWidget::qt_metacall (this=0x8f20bf0, _c=InvokeMetaMethod, _id=24, _a=0xbfe9e728) at .moc/release-shared/moc_qtablewidget.cpp:158
#28 0x083abdea in KMyMoneyRegister::Register::qt_metacall (this=0x8f20bf0, _c=InvokeMetaMethod, _id=113, _a=0xbfe9e728) at /home/aga/Plugin/kmymoney/build/kmymoney/widgets/register.moc:131
#29 0xb5ee9864 in QMetaObject::activate (sender=0x8f20bf0, from_signal_index=32, to_signal_index=32, argv=0xbfe9e728) at kernel/qobject.cpp:3113
#30 0xb5eea585 in QMetaObject::activate (sender=0x8f20bf0, m=0xb5d7ea24, local_signal_index=1, argv=0xbfe9e728) at kernel/qobject.cpp:3187
#31 0xb5a54435 in QAbstractItemView::clicked (this=0x8f20bf0, _t1=...) at .moc/release-shared/moc_qabstractitemview.cpp:321
#32 0xb5a626c0 in QAbstractItemView::mouseReleaseEvent (this=0x8f20bf0, event=0xbfe9ef30) at itemviews/qabstractitemview.cpp:1660
#33 0x083a6acb in KMyMoneyRegister::Register::mouseReleaseEvent (this=0x0, e=0xb5d74140) at /home/aga/Plugin/kmymoney/kmymoney/widgets/register.cpp:1402
#34 0xb5570bac in QWidget::event (this=0x8f20bf0, event=0xbfe9ef30) at kernel/qwidget.cpp:7554
#35 0xb590dbb5 in QFrame::event (this=0x8f20bf0, e=0xbfe9ef30) at widgets/qframe.cpp:559
#36 0xb59ae12c in QAbstractScrollArea::viewportEvent (this=0x94d0c00, e=0x0) at widgets/qabstractscrollarea.cpp:962
#37 0xb5a65a44 in QAbstractItemView::viewportEvent (this=0x8f20bf0, event=0xbfe9ef30) at itemviews/qabstractitemview.cpp:1476
#38 0xb59b0786 in viewportEvent (event=<value optimized out>, this=<value optimized out>) at widgets/qabstractscrollarea_p.h:100
#39 QAbstractScrollAreaFilter::eventFilter (event=<value optimized out>, this=<value optimized out>) at widgets/qabstractscrollarea_p.h:111
#40 0xb5ed250e in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=0x86e9930, receiver=0x8f207b0, event=0xbfe9ef30) at kernel/qcoreapplication.cpp:726
#41 0xb55198d0 in QApplicationPrivate::notify_helper (this=0x86e9930, receiver=0x8f207b0, e=0xbfe9ef30) at kernel/qapplication.cpp:4061
#42 0xb5521bbb in QApplication::notify (this=0x8f207b0, receiver=0x8f207b0, e=0xbfe9ef30) at kernel/qapplication.cpp:3767
#43 0xb6a90521 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#44 0xb5ed332e in QCoreApplication::notifyInternal (this=0x86e9610, receiver=0x8f207b0, event=0xbfe9ef30) at kernel/qcoreapplication.cpp:610
#45 0xb5520bdc in sendSpontaneousEvent (event=<value optimized out>, receiver=<value optimized out>) at ../../src/corelib/kernel/qcoreapplication.h:216
#46 QApplicationPrivate::sendMouseEvent (event=<value optimized out>, receiver=<value optimized out>) at kernel/qapplication.cpp:2924
#47 0xb559180a in QETWidget::translateMouseEvent (this=0x8824d68, event=0xbfea055c) at kernel/qapplication_x11.cpp:4409
#48 0xb5590d7e in QApplication::x11ProcessEvent (this=0x86e9610, event=0xbfea055c) at kernel/qapplication_x11.cpp:3428
#49 0xb55bbb68 in x11EventSourceDispatch (s=0x86ecb70, callback=0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#50 0xb49c94c2 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#51 0xb49ccd98 in ?? () from /usr/lib/libglib-2.0.so.0
#52 0xb49ccebe in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#53 0xb5eff011 in QEventDispatcherGlib::processEvents (this=0x86cef58, flags=...) at kernel/qeventdispatcher_glib.cpp:407
#54 0xb55bb29a in QGuiEventDispatcherGlib::processEvents (this=0x86cef58, flags=...) at kernel/qguieventdispatcher_glib.cpp:202
#55 0xb5ed198d in QEventLoop::processEvents (this=0xbfea0814, flags=) at kernel/qeventloop.cpp:149
#56 0xb5ed1dd9 in QEventLoop::exec (this=0xbfea0814, flags=...) at kernel/qeventloop.cpp:201
#57 0xb5ed4270 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:888
#58 0xb5519774 in QApplication::exec () at kernel/qapplication.cpp:3525
#59 0x0808ead7 in main (argc=3, argv=0xbfea0c94) at /home/aga/Plugin/kmymoney/kmymoney/main.cpp:277


Usually, I've cancelled the edit and caused the crash.  This time, I didn't do that, just clicked another item.
Comment 9 Cristian Oneț 2010-06-22 19:20:51 UTC
SVN commit 1141385 by conet:

BUG: 241162
This time the bug should be really fixed. After entering the transaction check if the transaction editor is still there. That means that entering the transaction was cancelled somewhere inside the enter process (like cancelling the exchange rate editor). If so stay in edit mode instead of selecting another transaction.

 M  +10 -0     kmymoney.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1141385