summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimjees Abraham <simjees.abraham@nokia.com>2012-05-15 14:03:08 +0200
committerKai Koehne <kai.koehne@nokia.com>2012-05-15 14:26:27 +0200
commit87c664058f64bd0d351deaa2c7ba23b09c088d8a (patch)
tree928e4c04369242ebf8693991ed2ab52a5ae4dd74
parent69530f76aa81d7471efec0996c3c791c21a66d1d (diff)
downloadqt-creator-87c664058f64bd0d351deaa2c7ba23b09c088d8a.tar.gz
Debugger: Apply on Save only when Engine client is connected
Creation of the Text previews are done only when the engine client is connected and they are deleted once the engine client changes from the connected state. Change-Id: I325d0d1a281b9e8fab4ddf9ff8ea4f5e60d4ac2a Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
-rw-r--r--src/plugins/debugger/qml/qmlinspectoradapter.cpp26
-rw-r--r--src/plugins/debugger/qml/qmlinspectoradapter.h3
2 files changed, 23 insertions, 6 deletions
diff --git a/src/plugins/debugger/qml/qmlinspectoradapter.cpp b/src/plugins/debugger/qml/qmlinspectoradapter.cpp
index 2bef2681e3..d0cc42202e 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<BaseEngineDebugClient*>(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<int> &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<QString, QByteArray> changesHash;
diff --git a/src/plugins/debugger/qml/qmlinspectoradapter.h b/src/plugins/debugger/qml/qmlinspectoradapter.h
index 221813d1b7..8976c35e11 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