diff options
author | Simjees Abraham <simjees.abraham@nokia.com> | 2012-05-21 14:22:08 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-21 15:55:11 +0200 |
commit | ed0897be265b6f399b0bd713d965a6e1a9dfd540 (patch) | |
tree | 801d78357f128fba570f006eb263021236c03ca1 /src/plugins | |
parent | 170996ef31cc98fc957dd63f2e2f941caf40f572 (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.cpp | 23 | ||||
-rw-r--r-- | src/plugins/qmltooling/shared/abstractviewinspector.h | 4 |
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 |