From 8ba19b2c5ea9c6fa9d1397c98a0592aa4c5c446a Mon Sep 17 00:00:00 2001 From: Christiaan Janssen Date: Tue, 19 Jul 2011 18:07:46 +0200 Subject: [PATCH] Qml Debugging: only read properties that can be displayed in the debugger Change-Id: I68a6636aae271924bcec31ce7ad76c01fc43080b Task-number: QTCREATORBUG-5075 Reviewed-on: http://codereview.qt.nokia.com/1893 Reviewed-by: Qt Sanity Bot Reviewed-by: Kai Koehne --- src/declarative/qml/qdeclarativeenginedebug.cpp | 12 ++++++------ src/declarative/qml/qdeclarativewatcher.cpp | 3 ++- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/declarative/qml/qdeclarativeenginedebug.cpp b/src/declarative/qml/qdeclarativeenginedebug.cpp index af99f05..6c605cb 100644 --- a/src/declarative/qml/qdeclarativeenginedebug.cpp +++ b/src/declarative/qml/qdeclarativeenginedebug.cpp @@ -147,12 +147,6 @@ QDeclarativeEngineDebugServer::propertyData(QObject *obj, int propIdx) if (binding) rv.binding = binding->expression(); - QVariant value; - if (prop.userType() != 0) { - value = prop.read(obj); - } - rv.value = valueContents(value); - if (QDeclarativeValueTypeFactory::isValueType(prop.userType())) { rv.type = QDeclarativeObjectProperty::Basic; } else if (QDeclarativeMetaType::isQObject(prop.userType())) { @@ -161,6 +155,12 @@ QDeclarativeEngineDebugServer::propertyData(QObject *obj, int propIdx) rv.type = QDeclarativeObjectProperty::List; } + QVariant value; + if (rv.type != QDeclarativeObjectProperty::Unknown && prop.userType() != 0) { + value = prop.read(obj); + } + rv.value = valueContents(value); + return rv; } diff --git a/src/declarative/qml/qdeclarativewatcher.cpp b/src/declarative/qml/qdeclarativewatcher.cpp index c174998..33f0358 100644 --- a/src/declarative/qml/qdeclarativewatcher.cpp +++ b/src/declarative/qml/qdeclarativewatcher.cpp @@ -47,6 +47,7 @@ #include #include "private/qdeclarativeproperty_p.h" +#include "private/qdeclarativevaluetype_p.h" #include #include @@ -112,7 +113,7 @@ void QDeclarativeWatchProxy::notifyValueChanged() QVariant v; if (m_expr) v = m_expr->evaluate(); - else + else if (QDeclarativeValueTypeFactory::isValueType(m_property.userType())) v = m_property.read(m_object); emit m_watch->propertyChanged(m_id, m_debugId, m_property, v); -- 1.7.2.5