diff --git a/src/plugins/languageclient/lspinspector.cpp b/src/plugins/languageclient/lspinspector.cpp index 31a353c2787..c01b5061cea 100644 --- a/src/plugins/languageclient/lspinspector.cpp +++ b/src/plugins/languageclient/lspinspector.cpp @@ -341,14 +341,15 @@ private: void LspInspector::show(const QString &defaultClient) { if (!m_currentWidget) { - m_currentWidget = new LspInspectorWidget(this); - m_currentWidget->setAttribute(Qt::WA_DeleteOnClose); - Core::ICore::registerWindow(m_currentWidget, Core::Context("LanguageClient.Inspector")); + auto widget = new LspInspectorWidget(this); + connect(widget, &LspInspectorWidget::finished, this, &LspInspector::onInspectorClosed); + Core::ICore::registerWindow(widget, Core::Context("LanguageClient.Inspector")); + m_currentWidget = widget; } else { QApplication::setActiveWindow(m_currentWidget); } if (!defaultClient.isEmpty()) - static_cast(m_currentWidget.data())->selectClient(defaultClient); + static_cast(m_currentWidget)->selectClient(defaultClient); m_currentWidget->show(); } @@ -392,6 +393,12 @@ QList LspInspector::clients() const return m_logs.keys(); } +void LspInspector::onInspectorClosed() +{ + m_currentWidget->deleteLater(); + m_currentWidget = nullptr; +} + LspInspectorWidget::LspInspectorWidget(LspInspector *inspector) : m_inspector(inspector), m_tabWidget(new QTabWidget(this)) { diff --git a/src/plugins/languageclient/lspinspector.h b/src/plugins/languageclient/lspinspector.h index de37b9f713f..aa3620fb2ba 100644 --- a/src/plugins/languageclient/lspinspector.h +++ b/src/plugins/languageclient/lspinspector.h @@ -68,9 +68,11 @@ signals: void capabilitiesUpdated(const QString &clientName); private: + void onInspectorClosed(); + QMap> m_logs; QMap m_capabilities; - QPointer m_currentWidget; + QWidget *m_currentWidget = nullptr; int m_logSize = 100; // default log size if no widget is currently visible };