diff --git a/shell/shellcorona.h b/shell/shellcorona.h --- a/shell/shellcorona.h +++ b/shell/shellcorona.h @@ -25,6 +25,7 @@ #include "plasma/corona.h" +#include #include #include #include @@ -238,7 +239,7 @@ QList m_waitingPanels; QHash m_activityContainmentPlugins; QAction *m_addPanelAction; - QMenu *m_addPanelsMenu; + QScopedPointer m_addPanelsMenu; KPackage::Package m_lookAndFeelPackage; QSet m_redundantOutputs; KDeclarative::QmlObjectSharedEngine *m_interactiveConsole; diff --git a/shell/shellcorona.cpp b/shell/shellcorona.cpp --- a/shell/shellcorona.cpp +++ b/shell/shellcorona.cpp @@ -1709,8 +1709,7 @@ delete m_addPanelAction; m_addPanelAction = nullptr; - delete m_addPanelsMenu; - m_addPanelsMenu = nullptr; + m_addPanelsMenu.reset(nullptr); KPluginInfo::List panelContainmentPlugins = Plasma::PluginLoader::listContainmentsOfType(QStringLiteral("Panel")); @@ -1725,12 +1724,12 @@ m_addPanelAction->setData(Plasma::Types::AddAction); connect(m_addPanelAction, SIGNAL(triggered(bool)), this, SLOT(addPanel())); } else if (!panelContainmentPlugins.isEmpty()) { - m_addPanelsMenu = new QMenu; + m_addPanelsMenu.reset(new QMenu); m_addPanelAction = m_addPanelsMenu->menuAction(); m_addPanelAction->setText(i18n("Add Panel")); m_addPanelAction->setData(Plasma::Types::AddAction); - connect(m_addPanelsMenu, &QMenu::aboutToShow, this, &ShellCorona::populateAddPanelsMenu); - connect(m_addPanelsMenu, SIGNAL(triggered(QAction*)), this, SLOT(addPanel(QAction*))); + connect(m_addPanelsMenu.data(), &QMenu::aboutToShow, this, &ShellCorona::populateAddPanelsMenu); + connect(m_addPanelsMenu.data(), SIGNAL(triggered(QAction*)), this, SLOT(addPanel(QAction*))); } if (m_addPanelAction) {