diff --git a/src/view/kateview.h b/src/view/kateview.h --- a/src/view/kateview.h +++ b/src/view/kateview.h @@ -31,6 +31,7 @@ #include #include +#include #include #include #include @@ -63,6 +64,7 @@ class KateViewEncodingAction; class KateModeMenu; class KateAbstractInputMode; +class KateScriptActionMenu; class KToggleAction; class KSelectAction; @@ -983,6 +985,14 @@ int lastDisplayedLineInternal(LineType lineType) const; QRect textAreaRectInternal() const; + +private: + /** + * script action menu, stored in scoped pointer to ensure + * destruction before other QObject auto-cleanup as it + * manage sub objects on its own that have this view as parent + */ + QScopedPointer m_scriptActionMenu; }; } diff --git a/src/view/kateview.cpp b/src/view/kateview.cpp --- a/src/view/kateview.cpp +++ b/src/view/kateview.cpp @@ -491,8 +491,9 @@ a->setWhatsThis(i18n("Revert the most recent undo operation")); // Tools > Scripts - KateScriptActionMenu *scriptActionMenu = new KateScriptActionMenu(this, i18n("&Scripts")); - ac->addAction(QStringLiteral("tools_scripts"), scriptActionMenu); + // stored inside scoped pointer to ensure we destruct it early enough as it does internal cleanups of other child objects + m_scriptActionMenu.reset(new KateScriptActionMenu(this, i18n("&Scripts"))); + ac->addAction(QStringLiteral("tools_scripts"), m_scriptActionMenu.data()); a = ac->addAction(QStringLiteral("tools_apply_wordwrap")); a->setText(i18n("Apply &Word Wrap"));