diff options
author | Michael Brasser <michael.brasser@nokia.com> | 2012-05-02 11:47:55 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-10 02:49:46 +0200 |
commit | 527b700f73c3bc114ba092418ee48626e95014a3 (patch) | |
tree | 6a8fb41652cb604d7f88430e84b7f27bb14cb9cd /src/qml/qml/qqmlvme.cpp | |
parent | 319007117a8fafe9a72230bbc13fb18833ff4a16 (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.cpp | 17 |
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) |