aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlvme.cpp
diff options
context:
space:
mode:
authorMichael Brasser <michael.brasser@nokia.com>2012-05-02 11:47:55 +1000
committerQt by Nokia <qt-info@nokia.com>2012-05-10 02:49:46 +0200
commit527b700f73c3bc114ba092418ee48626e95014a3 (patch)
tree6a8fb41652cb604d7f88430e84b7f27bb14cb9cd /src/qml/qml/qqmlvme.cpp
parent319007117a8fafe9a72230bbc13fb18833ff4a16 (diff)
Allow V4 bindings to be assigned to aliases
V4 bindings must be able to be retargetted for them to be assignable to aliases. Change-Id: I4d3addd0fdc90b9bf472c781d316f7f406eaf1d7 Reviewed-by: Chris Adams <christopher.adams@nokia.com>
Diffstat (limited to 'src/qml/qml/qqmlvme.cpp')
-rw-r--r--src/qml/qml/qqmlvme.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/qml/qml/qqmlvme.cpp b/src/qml/qml/qqmlvme.cpp
index 898f598af4..093b6d1575 100644
--- a/src/qml/qml/qqmlvme.cpp
+++ b/src/qml/qml/qqmlvme.cpp
@@ -831,12 +831,21 @@ QObject *QQmlVME::run(QList<QQmlError> *errors,
bindValues.push(binding);
binding->m_mePtr = &bindValues.top();
- Q_ASSERT(binding->propertyIndex() == (property & 0xFF00FFFF));
- Q_ASSERT(binding->object() == target);
+ if (instr.isAlias) {
+ QQmlAbstractBinding *old =
+ QQmlPropertyPrivate::setBindingNoEnable(target,
+ instr.property & 0xFFFF,
+ instr.property >> 24,
+ binding);
+ if (old) { old->destroy(); }
+ } else {
+ Q_ASSERT(binding->propertyIndex() == (property & 0xFF00FFFF));
+ Q_ASSERT(binding->object() == target);
- CLEAN_PROPERTY(target, property & 0xFF00FFFF);
+ CLEAN_PROPERTY(target, property & 0xFF00FFFF);
- binding->addToObject();
+ binding->addToObject();
+ }
QML_END_INSTR(StoreV4Binding)
QML_BEGIN_INSTR(StoreV8Binding)