aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
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