aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlproperty.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@theqtcompany.com>2015-04-15 12:43:24 +0200
committerSimon Hausmann <simon.hausmann@theqtcompany.com>2015-04-26 18:42:16 +0000
commit629aa559b503aa1b18be35ceff1e20d1817042a3 (patch)
treeed86b3eee587ffc958caee75600eb0215ccc9738 /src/qml/qml/qqmlproperty.cpp
parent01c0c0963794f4dd8c3601e8340cc3dc4dec41bd (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.cpp34
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);