diff options
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 |