diff --git a/src/libs/qmldebug/basetoolsclient.h b/src/libs/qmldebug/basetoolsclient.h index 130b2cdd285..0e3ef774455 100644 --- a/src/libs/qmldebug/basetoolsclient.h +++ b/src/libs/qmldebug/basetoolsclient.h @@ -83,6 +83,7 @@ signals: void designModeBehaviorChanged(bool inDesignMode); void showAppOnTopChanged(bool showAppOnTop); void reloaded(); // the server has reloaded the document + void destroyedObject(); void logActivity(QString client, QString message); diff --git a/src/libs/qmldebug/qmltoolsclient.cpp b/src/libs/qmldebug/qmltoolsclient.cpp index c1f74f70ec5..44c3f9b5a5b 100644 --- a/src/libs/qmldebug/qmltoolsclient.cpp +++ b/src/libs/qmldebug/qmltoolsclient.cpp @@ -67,7 +67,8 @@ QmlToolsClient::QmlToolsClient(QmlDebugConnection *client) m_connection(client), m_requestId(0), m_slowDownFactor(1), - m_reloadQueryId(-1) + m_reloadQueryId(-1), + m_destroyObjectQueryId(-1) { setObjectName(name()); } @@ -87,6 +88,9 @@ void QmlToolsClient::messageReceived(const QByteArray &message) if ((m_reloadQueryId != -1) && (m_reloadQueryId == requestId) && success) emit reloaded(); + if ((m_destroyObjectQueryId != -1) && (m_destroyObjectQueryId == requestId) && success) + emit destroyedObject(); + log(LogReceive, type, QString(QLatin1String("requestId: %1 success: %2")) .arg(QString::number(requestId)).arg(QString::number(success))); } else if (type == QByteArray(EVENT)) { @@ -277,6 +281,7 @@ void QmlToolsClient::destroyQmlObject(int debugId) return; QByteArray message; QDataStream ds(&message, QIODevice::WriteOnly); + m_destroyObjectQueryId = m_requestId; ds << QByteArray(REQUEST) << m_requestId++ << QByteArray(DESTROY_OBJECT) << debugId; diff --git a/src/libs/qmldebug/qmltoolsclient.h b/src/libs/qmldebug/qmltoolsclient.h index 35327385adc..219d8367dd8 100644 --- a/src/libs/qmldebug/qmltoolsclient.h +++ b/src/libs/qmldebug/qmltoolsclient.h @@ -83,6 +83,7 @@ private: int m_requestId; qreal m_slowDownFactor; int m_reloadQueryId; + int m_destroyObjectQueryId; }; } // namespace QmlDebug diff --git a/src/plugins/debugger/qml/qmlinspectoradapter.cpp b/src/plugins/debugger/qml/qmlinspectoradapter.cpp index d0cc42202ec..529cdfb4f86 100644 --- a/src/plugins/debugger/qml/qmlinspectoradapter.cpp +++ b/src/plugins/debugger/qml/qmlinspectoradapter.cpp @@ -204,6 +204,7 @@ void QmlInspectorAdapter::toolsClientStatusChanged(QmlDebug::ClientStatus status connect(client, SIGNAL(logActivity(QString,QString)), m_debugAdapter, SLOT(logServiceActivity(QString,QString))); connect(client, SIGNAL(reloaded()), SLOT(onReloaded())); + connect(client, SIGNAL(destroyedObject()), SLOT(onDestroyedObject())); // only enable zoom action for Qt 4.x/old client // (zooming is integrated into selection tool in Qt 5). @@ -657,5 +658,10 @@ void QmlInspectorAdapter::onReloaded() } } +void QmlInspectorAdapter::onDestroyedObject() +{ + m_agent->refreshObjectTree(); +} + } // namespace Internal } // namespace Debugger diff --git a/src/plugins/debugger/qml/qmlinspectoradapter.h b/src/plugins/debugger/qml/qmlinspectoradapter.h index 8976c35e116..fcb8538f8d9 100644 --- a/src/plugins/debugger/qml/qmlinspectoradapter.h +++ b/src/plugins/debugger/qml/qmlinspectoradapter.h @@ -99,6 +99,7 @@ private slots: void onUpdateOnSaveChanged(const QVariant &value); void onReload(); void onReloaded(); + void onDestroyedObject(); private: void setActiveEngineClient(QmlDebug::BaseEngineDebugClient *client);