diff options
author | Chris Adams <christopher.adams@nokia.com> | 2011-09-08 15:13:42 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-09-19 07:31:00 +0200 |
commit | 85554f7f262ff5aae15562b11c6d08bcc03c961f (patch) | |
tree | 42208f1b3ea9ea02ec482314d9a99fa1b701793c /src/declarative | |
parent | 1aa075b6319ded90d79dfe28605294283502bead (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.cpp | 11 |
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) { |