diff --git a/src/plugins/debugger/qml/qmlinspectoradapter.cpp b/src/plugins/debugger/qml/qmlinspectoradapter.cpp index 2bef2681e39..d0cc42202ec 100644 --- a/src/plugins/debugger/qml/qmlinspectoradapter.cpp +++ b/src/plugins/debugger/qml/qmlinspectoradapter.cpp @@ -98,6 +98,7 @@ QmlInspectorAdapter::QmlInspectorAdapter(QmlAdapter *debugAdapter, , m_inspectorToolsContext("Debugger.QmlInspector") , m_selectAction(new QAction(this)) , m_zoomAction(new QAction(this)) + , m_engineClientConnected(false) { connect(m_agent, SIGNAL(objectFetched(QmlDebug::ObjectReference)), SLOT(onObjectFetched(QmlDebug::ObjectReference))); @@ -260,13 +261,17 @@ void QmlInspectorAdapter::toolsClientStatusChanged(QmlDebug::ClientStatus status void QmlInspectorAdapter::engineClientStatusChanged(QmlDebug::ClientStatus status) { - if (status != QmlDebug::Enabled) - return; - BaseEngineDebugClient *client = qobject_cast(sender()); - QTC_ASSERT(client, return); - setActiveEngineClient(client); + + if (status == QmlDebug::Enabled) { + QTC_ASSERT(client, return); + setActiveEngineClient(client); + } else if (m_engineClientConnected && + (client == m_engineClient)) { + m_engineClientConnected = false; + deletePreviews(); + } } void QmlInspectorAdapter::selectObjectsFromEditor(const QList &debugIds) @@ -332,6 +337,9 @@ void QmlInspectorAdapter::onObjectTreeUpdated() void QmlInspectorAdapter::createPreviewForEditor(Core::IEditor *newEditor) { + if (!m_engineClientConnected) + return; + if (newEditor && newEditor->id() != QmlJSEditor::Constants::C_QMLJSEDITOR_ID) return; @@ -455,7 +463,7 @@ void QmlInspectorAdapter::setActiveEngineClient(BaseEngineDebugClient *client) m_engineClient = client; m_agent->setEngineClient(m_engineClient); - + m_engineClientConnected = true; if (m_engineClient && m_engineClient->status() == QmlDebug::Enabled) { @@ -609,6 +617,12 @@ void QmlInspectorAdapter::selectObject(const ObjectReference &obj, emit selectionChanged(); } +void QmlInspectorAdapter::deletePreviews() +{ + foreach (const QString &key, m_textPreviews.keys()) + delete m_textPreviews.take(key); +} + void QmlInspectorAdapter::onReload() { QHash changesHash; diff --git a/src/plugins/debugger/qml/qmlinspectoradapter.h b/src/plugins/debugger/qml/qmlinspectoradapter.h index 221813d1b77..8976c35e116 100644 --- a/src/plugins/debugger/qml/qmlinspectoradapter.h +++ b/src/plugins/debugger/qml/qmlinspectoradapter.h @@ -114,6 +114,7 @@ private: void selectObject( const QmlDebug::ObjectReference &objectReference, SelectionTarget target); + void deletePreviews(); QmlAdapter *m_debugAdapter; @@ -142,6 +143,8 @@ private: Core::Context m_inspectorToolsContext; QAction *m_selectAction; QAction *m_zoomAction; + + bool m_engineClientConnected; }; } // namespace Internal