Fix crash at shutdown after showing a tooltip

Summary:
Fix crash at shutdown after showing a tooltip. The commit
94d7e1471e introduced a crash that occurs
when closing Dolphin after Dolphin has showed a tooltip. This happens
because the ToolTipManager::showToolTip function calls the
KToopTipWidget::showBelow function passing in the pointer to the
DolphinFileMetaDataWidget. But this also passes the ownership of the
pointer to the KToopTipWidget as long as a new tooltip is not shown. The
problem is that at shutdown, the KToopTipWidget instance will be
destoyed first and therefore also destroy the DolphinFileMetaDataWidget
instance (which the ToolTipManager still owns through the
QScopedPointer) causing it to be deleted twice. The fix for this is
simply to swap the order of these two members so that the
DolphinFileMetaDataWidget is destroyed first by the QScopedPointer
thereby removing it from the KToopTipWidget if it has been set as it's
parent.

Test Plan:
Open Dolphin
Show a Tool Tip
Close Dolphin

Reviewers: #dolphin, elvisangelaccio

Reviewed By: #dolphin, elvisangelaccio

Subscribers: kfm-devel

Tags: #dolphin

Differential Revision: https://phabricator.kde.org/D19737
This commit is contained in:
David Hallas 2019-03-13 20:27:40 +01:00
parent 21b140943d
commit f2b72c1648

View file

@ -84,8 +84,8 @@ private:
/// Transient parent of the tooltip, mandatory on Wayland.
QWindow* m_transientParent;
QScopedPointer<DolphinFileMetaDataWidget> m_fileMetaDataWidget;
QScopedPointer<KToolTipWidget> m_tooltipWidget;
QScopedPointer<DolphinFileMetaDataWidget> m_fileMetaDataWidget;
bool m_toolTipRequested;
bool m_metaDataRequested;