Bug 256902 - Show popup window when moving focus to a date widget for Mac OS X
Summary: Show popup window when moving focus to a date widget for Mac OS X
Status: RESOLVED FIXED
Alias: None
Product: kmymoney
Classification: Applications
Component: general (show other bugs)
Version: 4.5
Platform: MacPorts macOS
: NOR wishlist
Target Milestone: ---
Assignee: KMyMoney Devel Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-11-14 18:52 UTC by Marko Käning
Modified: 2013-01-26 15:55 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
crash log (125.73 KB, text/plain)
2010-11-14 18:52 UTC, Marko Käning
Details
patch to avoid crash (735 bytes, patch)
2010-11-14 20:45 UTC, Marko Käning
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Marko Käning 2010-11-14 18:52:44 UTC
Created attachment 53410 [details]
crash log

Version:           4.5 (using KDE 4.5.3) 
OS:                OS X

I'm using KMyMoney 4.5 on MacOSX installed via Macports.

On the ledger view, when I try to change the date by clicking on the edit field on a new or on an old transaction, KMyMoney just segfaults.

Please let me know if you need anything to track down the issue.

Note that the date edit field works nice in other places in the app, like in Account editing dialog or in Report editing dialog. In fact it only segfaults in the ledger view. 

Reproducible: Didn't try

Steps to Reproduce:
Click on date input field in Ledger view

Actual Results:  
crash (KMM pauses long and than shows a crash log)

Expected Results:  
make date editable
Comment 1 Marko Käning 2010-11-14 20:45:31 UTC
Created attachment 53414 [details]
patch to avoid crash

Thanks to kmymoney's lead developer there is a temporary fix for the crash bug.
Uncommenting show() and hide() in kMyMoneyDateInput::eventFilter() did the job.
Still there is an issue with loosing focus of the corresponding three input fields of the date edit field...
Comment 2 Pierre Maurier 2010-11-15 08:07:19 UTC
The solution works great for me, the behavior is a little strange some time, especially if you try to use the up and down arrows to change the 2nd or 3rd edit field. But it's really better than a crash.

Thanks a lot for this quick fix !
Comment 3 Cristian Oneț 2010-11-21 22:08:18 UTC
Could you provide a patch that both fixes the crash and keeps the functionality also? The widget that was being shown there is a tooltip with the current date.
Comment 4 Marko Käning 2010-11-21 22:26:26 UTC
Hi Cristian,

I'd love to, but I am not able to deliver a patch. Thomas advised me to try this dirty trick. It does the job, although the input still behaves  a little weird due to jumping focus, but it doesn't crash anymore the app.

Sorry I can't be of more help here.

Greets,
Marko
Comment 5 Thomas Baumgart 2011-01-13 15:27:32 UTC
SVN commit 1214207 by tbaumgart:

Comment show/hide for Mac OS X to avoid crashes.

BUG: 256902

 M  +4 -0      kmymoneydateinput.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1214207
Comment 6 Thomas Baumgart 2011-01-13 15:30:33 UTC
I reopened this as a wish list item so that we can re-enable it on Mac OS X some time.
Comment 7 Marko Käning 2011-01-23 20:26:32 UTC
Is this actually rather a KDE or QT issue than an issue of KMM itself?
Comment 8 Marko Käning 2011-06-14 23:54:23 UTC
Finally filed at QT: http://bugreports.qt.nokia.com/browse/QTBUG-19870
Comment 9 Marko Käning 2011-06-15 00:16:12 UTC
Hey guys,

my post to QT-dev shows a first reaction ( http://developer.qt.nokia.com/forums/viewthread/6794/ ) and I wonder whether we can come up with a stripped down little app which would have this popup window functionality.

Greets,
Marko
Comment 10 Marko Käning 2011-06-16 00:07:54 UTC
Re-enabled the show() and hide() with the more recent QT 4.7.3 on a MacOSX 10.6.7 and still get the same error. This time with Itemizer::generate() at the top:


Process:         kmymoney [68279]
Path:            /opt/macports-test/Applications/KDE4/kmymoney.app/Contents/MacOS/kmymoney
Identifier:      kmymoney
Version:         ??? (???)
Code Type:       X86-64 (Native)
Parent Process:  bash [59111]

Date/Time:       2011-06-16 00:04:49.130 +0200
OS Version:      Mac OS X 10.6.7 (10J869)
Report Version:  6

Interval Since Last Report:          47401 sec
Crashes Since Last Report:           1
Per-App Crashes Since Last Report:   1
Anonymous UUID:                      4ADD88F0-37AC-4BFC-BB40-8308C8DB47A2

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00007fff5f3fff78
Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
0   libQtGui.4.dylib              	0x000000010495884a (anonymous namespace)::Itemizer::generate(int, int, QFont::Capitalization) + 26
1   libQtGui.4.dylib              	0x000000010495c6dc QTextEngine::itemize() const + 4748
2   libQtGui.4.dylib              	0x0000000104962524 QTextLayout::beginLayout() + 36
3   libQtGui.4.dylib              	0x0000000104866150 qt_format_text(QFont const&, QRectF const&, int, QTextOption const*, QString const&, QRectF*, int, int*, int, QPainter*) + 2112
4   libQtGui.4.dylib              	0x0000000104866f65 QPainter::drawText(QRect const&, int, QString const&, QRect*) + 277
5   libQtGui.4.dylib              	0x00000001049f2a15 QStyle::drawItemText(QPainter*, QRect const&, int, QPalette const&, bool, QString const&, QPalette::ColorRole) const + 629
Comment 11 Marko Käning 2011-06-19 11:54:55 UTC
The same happens with the latest svn revision 1237443 (where Thomas remove the duplicate installEventFilter(this) line from kmymoney/widgets/kmymoneydateinput.cpp:
---
Process:         kmymoney [231]
Path:            /opt/macports-test/Applications/KDE4/kmymoney.app/Contents/MacOS/kmymoney
Identifier:      ???
Version:          ()
Code Type:       X86-64 (Native)
Parent Process:  launchd [167]

Date/Time:       2011-06-19 11:50:44.020 +0200
OS Version:      Mac OS X 10.6.7 (10J869)
Report Version:  6

Interval Since Last Report:          120592 sec
Crashes Since Last Report:           3
Per-App Interval Since Last Report:  67871 sec
Per-App Crashes Since Last Report:   11
Anonymous UUID:                      4ADD88F0-37AC-4BFC-BB40-8308C8DB47A2

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00007fff5f3ff140
Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
0   libQtGui.4.dylib              	0x00000001047e7464 QTextEngine::itemize() const + 20
1   libQtGui.4.dylib              	0x00000001047e8a73 QTextEngine::attributes() const + 115
2   libQtGui.4.dylib              	0x00000001047f09e8 QTextLine::layout_helper(int) + 792
3   libQtGui.4.dylib              	0x00000001046f21cb qt_format_text(QFont const&, QRectF const&, int, QTextOption const*, QString const&, QRectF*, int, int*, int, QPainter*) + 2235
4   libQtGui.4.dylib              	0x00000001046f2f65 QPainter::drawText(QRect const&, int, QString const&, QRect*) + 277
5   libQtGui.4.dylib              	0x000000010487ea15 QStyle::drawItemText(QPainter*, QRect const&, int, QPalette const&, bool, QString const&, QPalette::ColorRole) const + 629
6   libQtGui.4.dylib              	0x000000010498534b QLabel::paintEvent(QPaintEvent*) + 1803
7   libQtGui.4.dylib              	0x0000000104625596 QWidget::event(QEvent*) + 2294
8   libQtGui.4.dylib              	0x000000010498005c QFrame::event(QEvent*) + 44
9   libQtGui.4.dylib              	0x00000001049833eb QLabel::event(QEvent*) + 91
10  libQtGui.4.dylib              	0x00000001045cb8ad QApplicationPrivate::notify_helper(QObject*, QEvent*) + 189
11  libQtGui.4.dylib              	0x00000001045d170d QApplication::notify(QObject*, QEvent*) + 349
12  libkdeui.5.dylib              	0x0000000101eb4ca0 KApplication::notify(QObject*, QEvent*) + 64 (kapplication.cpp:311)
13  libQtCore.4.dylib             	0x00000001041ef03c QCoreApplication::notifyInternal(QObject*, QEvent*) + 124
14  libQtGui.4.dylib              	0x00000001045cba6c qt_sendSpontaneousEvent(QObject*, QEvent*) + 44
15  libQtGui.4.dylib              	0x00000001045753dd -[QCocoaView drawRect:] + 1213
16  com.apple.AppKit              	0x00007fff80103c49 -[NSView _drawRect:clip:] + 3390
17  com.apple.AppKit              	0x00007fff801028bc -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 1325
18  com.apple.AppKit              	0x00007fff80102c26 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 2199
19  com.apple.AppKit              	0x00007fff80102c26 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 2199
20  com.apple.AppKit              	0x00007fff80102c26 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 2199
21  com.apple.AppKit              	0x00007fff80100f8e -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 767
22  com.apple.AppKit              	0x00007fff8021f8e4 -[NSNextStepFrame _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 276
23  com.apple.AppKit              	0x00007fff800fd362 -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] + 2683
24  com.apple.AppKit              	0x00007fff80076b9a -[NSView displayIfNeeded] + 969
25  com.apple.AppKit              	0x00007fff8002c39c -[NSNextStepFrame displayIfNeeded] + 76
26  libQtGui.4.dylib              	0x00000001045797f7 -[QCocoaWindow displayIfNeeded] + 247
27  com.apple.AppKit              	0x00007fff8003ebe3 -[NSWindow _reallyDoOrderWindow:relativeTo:findKey:forCounter:force:isModal:] + 1050
28  com.apple.AppKit              	0x00007fff8003e77a -[NSWindow orderWindow:relativeTo:] + 94
29  libQtGui.4.dylib              	0x000000010456d97f QWidgetPrivate::raise_sys() + 335
30  libQtGui.4.dylib              	0x000000010461cde9 QWidget::raise() + 393
31  libQtGui.4.dylib              	0x0000000104627a48 QWidgetPrivate::show_helper() + 536
32  libQtGui.4.dylib              	0x0000000104627cff QWidget::setVisible(bool) + 511
.
.
.
---
Comment 12 Marko Käning 2013-01-26 15:55:49 UTC
This has been resolved with KMM's git commit 8a31214f492c7dfff28d56f1811b49da847262aa by removing the corresponding code for the date field in case of Mac OS X.