aboutsummaryrefslogtreecommitdiffstats
path: root/src/declarative
diff options
context:
space:
mode:
authorChris Adams <christopher.adams@nokia.com>2011-09-08 15:13:42 +1000
committerQt by Nokia <qt-info@nokia.com>2011-09-19 07:31:00 +0200
commit85554f7f262ff5aae15562b11c6d08bcc03c961f (patch)
tree42208f1b3ea9ea02ec482314d9a99fa1b701793c /src/declarative
parent1aa075b6319ded90d79dfe28605294283502bead (diff)
Fix QDeclarativeListProperty assignment
This commit ensures that a QDeclarativeListReference can be assigned to another QDeclarativeListProperty, by retrieving each element in the list reference and converting to the appropriate type before appending to the target list property. Task-number: QTBUG-16316 Change-Id: Id8858058f052a53bf43eadc085fd278654478d77 Reviewed-on: http://codereview.qt-project.org/4388 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
Diffstat (limited to 'src/declarative')
-rw-r--r--src/declarative/qml/qdeclarativeproperty.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/declarative/qml/qdeclarativeproperty.cpp b/src/declarative/qml/qdeclarativeproperty.cpp
index 60e785510a..acc2cfb752 100644
--- a/src/declarative/qml/qdeclarativeproperty.cpp
+++ b/src/declarative/qml/qdeclarativeproperty.cpp
@@ -1215,7 +1215,16 @@ bool QDeclarativePropertyPrivate::write(QObject *object, const QDeclarativePrope
prop.clear(&prop);
- if (value.userType() == qMetaTypeId<QList<QObject *> >()) {
+ if (value.userType() == qMetaTypeId<QDeclarativeListReference>()) {
+ QDeclarativeListReference qdlr = value.value<QDeclarativeListReference>();
+
+ for (int ii = 0; ii < qdlr.count(); ++ii) {
+ QObject *o = qdlr.at(ii);
+ if (o && !canConvert(o->metaObject(), listType))
+ o = 0;
+ prop.append(&prop, (void *)o);
+ }
+ } else if (value.userType() == qMetaTypeId<QList<QObject *> >()) {
const QList<QObject *> &list = qvariant_cast<QList<QObject *> >(value);
for (int ii = 0; ii < list.count(); ++ii) {