diff options
author | Michael Brasser <michael.brasser@nokia.com> | 2012-03-23 08:22:02 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-26 07:24:29 +0200 |
commit | 68ac4c57c46f72b4db16cf02ba67953c9cf4bdc4 (patch) | |
tree | 3a22ab063e86ca88004d103fa21c53ff82aae927 /src/qml/debugger/qqmlenginedebugservice.cpp | |
parent | fa3ef5376acc69b147718f49eddb842fdd5d2dd2 (diff) |
Remove QObject parenting from QQmlAbstractBoundSignal.
Change-Id: If549cf57bbac18a986a2a0e63fdc76902d2dae43
Reviewed-by: Chris Adams <christopher.adams@nokia.com>
Diffstat (limited to 'src/qml/debugger/qqmlenginedebugservice.cpp')
-rw-r--r-- | src/qml/debugger/qqmlenginedebugservice.cpp | 52 |
1 files changed, 30 insertions, 22 deletions
diff --git a/src/qml/debugger/qqmlenginedebugservice.cpp b/src/qml/debugger/qqmlenginedebugservice.cpp index 4bd8753c6f..2dbabdbf56 100644 --- a/src/qml/debugger/qqmlenginedebugservice.cpp +++ b/src/qml/debugger/qqmlenginedebugservice.cpp @@ -223,7 +223,7 @@ void QQmlEngineDebugService::buildObjectDump(QDataStream &message, int childrenCount = children.count(); for (int ii = 0; ii < children.count(); ++ii) { - if (qobject_cast<QQmlContext*>(children[ii]) || qobject_cast<QQmlAbstractBoundSignal*>(children[ii])) + if (qobject_cast<QQmlContext*>(children[ii])) --childrenCount; } @@ -235,19 +235,41 @@ void QQmlEngineDebugService::buildObjectDump(QDataStream &message, QObject *child = children.at(ii); if (qobject_cast<QQmlContext*>(child)) continue; - QQmlAbstractBoundSignal *signal = qobject_cast<QQmlAbstractBoundSignal*>(child); - if (signal) { - if (!dumpProperties) + if (recur) + buildObjectDump(message, child, recur, dumpProperties); + else + message << objectData(child); + } + + if (!dumpProperties) { + message << 0; + return; + } + + QList<int> propertyIndexes; + for (int ii = 0; ii < object->metaObject()->propertyCount(); ++ii) { + if (object->metaObject()->property(ii).isScriptable()) + propertyIndexes << ii; + } + + QQmlData *ddata = QQmlData::get(object); + if (ddata && ddata->signalHandlers) { + QQmlAbstractBoundSignal *signalHandler = ddata->signalHandlers; + + while (signalHandler) { + if (!dumpProperties) { + signalHandler = signalHandler->m_nextSignal; continue; + } QQmlObjectProperty prop; prop.type = QQmlObjectProperty::SignalProperty; prop.hasNotifySignal = false; - QQmlExpression *expr = signal->expression(); + QQmlExpression *expr = signalHandler->expression(); if (expr) { prop.value = expr->expression(); QObject *scope = expr->scopeObject(); if (scope) { - QString sig = QString::fromLatin1(scope->metaObject()->method(signal->index()).signature()); + QString sig = QString::fromLatin1(scope->metaObject()->method(signalHandler->index()).signature()); int lparen = sig.indexOf(QLatin1Char('(')); if (lparen >= 0) { QString methodName = sig.mid(0, lparen); @@ -257,23 +279,9 @@ void QQmlEngineDebugService::buildObjectDump(QDataStream &message, } } fakeProperties << prop; - } else { - if (recur) - buildObjectDump(message, child, recur, dumpProperties); - else - message << objectData(child); - } - } - if (!dumpProperties) { - message << 0; - return; - } - - QList<int> propertyIndexes; - for (int ii = 0; ii < object->metaObject()->propertyCount(); ++ii) { - if (object->metaObject()->property(ii).isScriptable()) - propertyIndexes << ii; + signalHandler = signalHandler->m_nextSignal; + } } message << propertyIndexes.size() + fakeProperties.count(); |