diff options
author | Lars Knoll <lars.knoll@theqtcompany.com> | 2015-04-15 12:43:24 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2015-04-26 18:42:16 +0000 |
commit | 629aa559b503aa1b18be35ceff1e20d1817042a3 (patch) | |
tree | ed86b3eee587ffc958caee75600eb0215ccc9738 /src/qml/qml/qqmlproperty.cpp | |
parent | 01c0c0963794f4dd8c3601e8340cc3dc4dec41bd (diff) |
Directly resolve property aliases in QQmlBinding::setTarget
Like this the target properties of the binding will always point
to the correct resolved object and property.
Change-Id: I400a265a17bc55de041c3df17f357e4b40f31c4d
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'src/qml/qml/qqmlproperty.cpp')
-rw-r--r-- | src/qml/qml/qqmlproperty.cpp | 34 |
1 files changed, 0 insertions, 34 deletions
diff --git a/src/qml/qml/qqmlproperty.cpp b/src/qml/qml/qqmlproperty.cpp index 8ee4a2d98e..f003bf8c3f 100644 --- a/src/qml/qml/qqmlproperty.cpp +++ b/src/qml/qml/qqmlproperty.cpp @@ -869,23 +869,6 @@ QQmlPropertyPrivate::setBinding(QObject *object, int coreIndex, int valueTypeInd } if (newBinding) { - if (newBinding->targetPropertyIndex() != index || newBinding->targetObject() != object) { - QQmlData *data = QQmlData::get(object, true); - if (data && data->propertyCache) { - QQmlPropertyData propertyData = *data->propertyCache->property(coreIndex); - if (valueTypeIndex != -1) { - const QMetaObject *valueTypeMetaObject = QQmlValueTypeFactory::metaObjectForMetaType(propertyData.propType); - Q_ASSERT(valueTypeMetaObject); - QMetaProperty vtProp = valueTypeMetaObject->property(valueTypeIndex); - propertyData.setFlags(propertyData.getFlags() | QQmlPropertyData::IsValueTypeVirtual); - propertyData.valueTypeFlags = QQmlPropertyData::flagsForProperty(vtProp); - propertyData.valueTypePropType = vtProp.userType(); - propertyData.valueTypeCoreIndex = valueTypeIndex; - } - static_cast<QQmlBinding *>(newBinding)->setTarget(object, propertyData); - } - } - Q_ASSERT(newBinding->targetPropertyIndex() == index); Q_ASSERT(newBinding->targetObject() == object); @@ -945,23 +928,6 @@ QQmlPropertyPrivate::setBindingNoEnable(QObject *object, int coreIndex, int valu binding->removeFromObject(); if (newBinding) { - if (newBinding->targetPropertyIndex() != index || newBinding->targetObject() != object) { - QQmlData *data = QQmlData::get(object, true); - if (data && data->propertyCache) { - QQmlPropertyData propertyData = *data->propertyCache->property(coreIndex); - if (valueTypeIndex != -1) { - const QMetaObject *valueTypeMetaObject = QQmlValueTypeFactory::metaObjectForMetaType(propertyData.propType); - Q_ASSERT(valueTypeMetaObject); - QMetaProperty vtProp = valueTypeMetaObject->property(valueTypeIndex); - propertyData.setFlags(propertyData.getFlags() | QQmlPropertyData::IsValueTypeVirtual); - propertyData.valueTypeFlags = QQmlPropertyData::flagsForProperty(vtProp); - propertyData.valueTypePropType = vtProp.userType(); - propertyData.valueTypeCoreIndex = valueTypeIndex; - } - static_cast<QQmlBinding *>(newBinding)->setTarget(object, propertyData); - } - } - Q_ASSERT(newBinding->targetPropertyIndex() == index); Q_ASSERT(newBinding->targetObject() == object); |