diff options
Diffstat (limited to 'src/plugins/coreplugin/statusbarmanager.cpp')
-rw-r--r-- | src/plugins/coreplugin/statusbarmanager.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/plugins/coreplugin/statusbarmanager.cpp b/src/plugins/coreplugin/statusbarmanager.cpp index bd9d86d5bb..5d9116379f 100644 --- a/src/plugins/coreplugin/statusbarmanager.cpp +++ b/src/plugins/coreplugin/statusbarmanager.cpp @@ -98,9 +98,9 @@ static void createStatusBarManager() bar->insertPermanentWidget(1, rightCornerWidget); m_statusBarWidgets.append(rightCornerWidget); - auto context = new StatusBarContext(bar); - context->setWidget(bar); - ICore::addContextObject(context); + auto statusContext = new StatusBarContext(bar); + statusContext->setWidget(bar); + ICore::addContextObject(statusContext); QObject::connect(ICore::instance(), &ICore::saveSettingsRequested, [] { QSettings *s = ICore::settings(); @@ -109,7 +109,8 @@ static void createStatusBarManager() s->endGroup(); }); - QObject::connect(ICore::instance(), &ICore::coreAboutToClose, [] { + QObject::connect(ICore::instance(), &ICore::coreAboutToClose, [statusContext] { + delete statusContext; // This is the catch-all on rampdown. Individual items may // have been removed earlier by destroyStatusBarWidget(). for (const QPointer<IContext> &context : m_contexts) { @@ -144,8 +145,8 @@ void StatusBarManager::destroyStatusBarWidget(QWidget *widget) QTC_ASSERT(widget, return); for (const QPointer<IContext> &context : m_contexts) { if (context->widget() == widget) { - ICore::removeContextObject(context); m_contexts.removeAll(context); + delete context; break; } } |