Skip to content
Snippets Groups Projects
Commit af94dad9 authored by Olivier Goffart's avatar Olivier Goffart
Browse files

Qml Debugger: process the contexts recursively

parent 8a91d7f6
No related branches found
No related tags found
No related merge requests found
......@@ -279,33 +279,37 @@ void ClientProxy::queryEngineContext(int id)
void ClientProxy::contextChanged()
{
if (m_contextQuery) {
m_rootObjects = m_contextQuery->rootContext().objects();
m_rootObjects.clear();
QDeclarativeDebugContextReference rootContext = m_contextQuery->rootContext();
delete m_contextQuery;
m_contextQuery = 0;
if (m_rootObjects.isEmpty()) {
emit objectTreeUpdated();
return;
}
qDeleteAll(m_objectTreeQuery);
m_objectTreeQuery.clear();
foreach(const QDeclarativeDebugObjectReference & obj, m_rootObjects) {
QDeclarativeDebugObjectQuery* query = m_client->queryObjectRecursive(obj, this);
if (!query->isWaiting()) {
query->deleteLater(); //ignore errors;
} else {
m_objectTreeQuery << query;
connect(query,
SIGNAL(stateChanged(QDeclarativeDebugQuery::State)),
SLOT(objectTreeFetched(QDeclarativeDebugQuery::State)));
}
}
fetchContextObjectRecusrsive(rootContext);
}
}
void ClientProxy::fetchContextObjectRecusrsive(const QDeclarativeDebugContextReference& context)
{
foreach (const QDeclarativeDebugObjectReference & obj, context.objects()) {
QDeclarativeDebugObjectQuery* query = m_client->queryObjectRecursive(obj, this);
if (!query->isWaiting()) {
query->deleteLater(); //ignore errors;
} else {
m_objectTreeQuery << query;
connect(query,
SIGNAL(stateChanged(QDeclarativeDebugQuery::State)),
SLOT(objectTreeFetched(QDeclarativeDebugQuery::State)));
}
}
foreach (const QDeclarativeDebugContextReference& child, context.contexts()) {
fetchContextObjectRecusrsive(child);
}
}
void ClientProxy::objectTreeFetched(QDeclarativeDebugQuery::State state)
{
QDeclarativeDebugObjectQuery *query = qobject_cast<QDeclarativeDebugObjectQuery *>(sender());
......
......@@ -124,6 +124,7 @@ private slots:
void onCurrentObjectsChanged(const QList<int> &debugIds, bool requestIfNeeded = true);
void updateEngineList();
void objectTreeFetched(QDeclarativeDebugQuery::State state = QDeclarativeDebugQuery::Completed);
void fetchContextObjectRecusrsive(const QmlJsDebugClient::QDeclarativeDebugContextReference& context);
private:
bool isDesignClientConnected() const;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment