aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorSimjees Abraham <simjees.abraham@nokia.com>2012-05-21 14:22:08 +0200
committerQt by Nokia <qt-info@nokia.com>2012-05-21 15:55:11 +0200
commited0897be265b6f399b0bd713d965a6e1a9dfd540 (patch)
tree801d78357f128fba570f006eb263021236c03ca1 /src/plugins
parent170996ef31cc98fc957dd63f2e2f941caf40f572 (diff)
Debugger: Response for DESTROY_OBJECT request sent correctly
The response for request DESTROY_OBJECT is sent after the object has been destroyed. This enables the creator to sync the objects tree displayed for debugging. Change-Id: Icedaf92df4402f067fd5b8590811c770e4b9063e Reviewed-by: Christiaan Janssen <christiaan.janssen@nokia.com>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/qmltooling/shared/abstractviewinspector.cpp23
-rw-r--r--src/plugins/qmltooling/shared/abstractviewinspector.h4
2 files changed, 25 insertions, 2 deletions
diff --git a/src/plugins/qmltooling/shared/abstractviewinspector.cpp b/src/plugins/qmltooling/shared/abstractviewinspector.cpp
index 174d70b20e..e5d56277d7 100644
--- a/src/plugins/qmltooling/shared/abstractviewinspector.cpp
+++ b/src/plugins/qmltooling/shared/abstractviewinspector.cpp
@@ -91,7 +91,8 @@ AbstractViewInspector::AbstractViewInspector(QObject *parent) :
m_enabled(false),
m_debugService(QQmlInspectorService::instance()),
m_eventId(0),
- m_reloadEventId(-1)
+ m_reloadEventId(-1),
+ m_destroyEventId(-1)
{
}
@@ -269,6 +270,20 @@ bool AbstractViewInspector::touchEvent(QTouchEvent *event)
return true;
}
+void AbstractViewInspector::onQmlObjectDestroyed()
+{
+ if (m_destroyEventId == -1)
+ return;
+
+ QByteArray response;
+
+ QQmlDebugStream rs(&response, QIODevice::WriteOnly);
+ rs << QByteArray(RESPONSE) << m_destroyEventId << true;
+
+ m_debugService->sendMessage(response);
+ m_destroyEventId = -1;
+}
+
void AbstractViewInspector::handleMessage(const QByteArray &message)
{
bool success = true;
@@ -329,8 +344,12 @@ void AbstractViewInspector::handleMessage(const QByteArray &message)
} else if (command == DESTROY_OBJECT) {
int debugId;
ds >> debugId;
- if (QObject *obj = QQmlDebugService::objectForId(debugId))
+ m_destroyEventId = requestId;
+ if (QObject *obj = QQmlDebugService::objectForId(debugId)) {
+ connect(obj, SIGNAL(destroyed()), SLOT(onQmlObjectDestroyed()));
obj->deleteLater();
+ }
+ return;
} else if (command == MOVE_OBJECT) {
int debugId, newParent;
diff --git a/src/plugins/qmltooling/shared/abstractviewinspector.h b/src/plugins/qmltooling/shared/abstractviewinspector.h
index 8855935e46..3addacf996 100644
--- a/src/plugins/qmltooling/shared/abstractviewinspector.h
+++ b/src/plugins/qmltooling/shared/abstractviewinspector.h
@@ -110,6 +110,9 @@ protected:
virtual bool wheelEvent(QWheelEvent *event);
virtual bool touchEvent(QTouchEvent *event);
+private slots:
+ void onQmlObjectDestroyed();
+
private:
void setEnabled(bool value);
@@ -123,6 +126,7 @@ private:
QList<AbstractTool *> m_tools;
int m_eventId;
int m_reloadEventId;
+ int m_destroyEventId;
};
} // namespace QmlJSDebugger