diff options
author | Simjees Abraham <simjees.abraham@nokia.com> | 2012-05-16 15:20:59 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-21 12:40:55 +0200 |
commit | fe652f6cfb6b8eef57854e90ee6d8a9d51573722 (patch) | |
tree | 19b62756526bc85cb15c45920984680eb634efa0 /src/qml/debugger/qqmlenginedebugservice.cpp | |
parent | d3ee501379c744206ce499a8f6697c7b547fdaeb (diff) |
Qml : Resetting binding corrected
Resetting the binding for property corrected in case the property is
nested (eg: font.bold)
Task-number: QTCREATORBUG-6294
Change-Id: I39cca54c17860c4e6df1cf864cc2f70214d50c8f
Reviewed-by: Christiaan Janssen <christiaan.janssen@nokia.com>
Diffstat (limited to 'src/qml/debugger/qqmlenginedebugservice.cpp')
-rw-r--r-- | src/qml/debugger/qqmlenginedebugservice.cpp | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/src/qml/debugger/qqmlenginedebugservice.cpp b/src/qml/debugger/qqmlenginedebugservice.cpp index 068bc36ebc..764ba6bbe6 100644 --- a/src/qml/debugger/qqmlenginedebugservice.cpp +++ b/src/qml/debugger/qqmlenginedebugservice.cpp @@ -651,7 +651,11 @@ bool QQmlEngineDebugService::resetBinding(int objectId, const QString &propertyN QQmlContext *context = qmlContext(object); if (object && context) { - if (object->property(propertyName.toLatin1()).isValid()) { + QString parentProperty = propertyName; + if (propertyName.indexOf(QLatin1Char('.')) != -1) + parentProperty = propertyName.left(propertyName.indexOf(QLatin1Char('.'))); + + if (object->property(parentProperty.toLatin1()).isValid()) { QQmlProperty property(object, propertyName); QQmlAbstractBinding *oldBinding = QQmlPropertyPrivate::binding(property); if (oldBinding) { @@ -669,7 +673,7 @@ bool QQmlEngineDebugService::resetBinding(int objectId, const QString &propertyN // overwrite with default value if (QQmlType *objType = QQmlMetaType::qmlType(object->metaObject())) { if (QObject *emptyObject = objType->create()) { - if (emptyObject->property(propertyName.toLatin1()).isValid()) { + if (emptyObject->property(parentProperty.toLatin1()).isValid()) { QVariant defaultValue = QQmlProperty(emptyObject, propertyName).read(); if (defaultValue.isValid()) { setBinding(objectId, propertyName, defaultValue, true); @@ -679,15 +683,24 @@ bool QQmlEngineDebugService::resetBinding(int objectId, const QString &propertyN } } } - } else if (hasValidSignal(object, propertyName)) { + return true; + } + + if (hasValidSignal(object, propertyName)) { QQmlProperty property(object, propertyName, context); QQmlPropertyPrivate::setSignalExpression(property, 0); - } else { - if (m_statesDelegate) - m_statesDelegate->resetBindingForInvalidProperty(object, propertyName); + return true; } + + if (m_statesDelegate) { + m_statesDelegate->resetBindingForInvalidProperty(object, propertyName); + return true; + } + + return false; } - return true; + // object or context null. + return false; } bool QQmlEngineDebugService::setMethodBody(int objectId, const QString &method, const QString &body) |