aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/debugger/qqmlenginedebugservice.cpp
diff options
context:
space:
mode:
authorMichael Brasser <michael.brasser@nokia.com>2012-03-23 08:22:02 +1000
committerQt by Nokia <qt-info@nokia.com>2012-03-26 07:24:29 +0200
commit68ac4c57c46f72b4db16cf02ba67953c9cf4bdc4 (patch)
tree3a22ab063e86ca88004d103fa21c53ff82aae927 /src/qml/debugger/qqmlenginedebugservice.cpp
parentfa3ef5376acc69b147718f49eddb842fdd5d2dd2 (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.cpp52
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();