aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmlmodels/qqmllistaccessor.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2022-07-25 14:24:19 +0200
committerUlf Hermann <ulf.hermann@qt.io>2022-07-26 21:17:28 +0200
commit6ea2a1cdb728635f9bd3cf239f751d4e88610881 (patch)
tree8db607732c7fcd1ea8dd4d0692f1d1046a4fa6a8 /src/qmlmodels/qqmllistaccessor.cpp
parentaa9412615bf7cee3fdcfd3854ba73f4cb3ed93b7 (diff)
QQmlListAccessor: Accept QQmlListProperty
So far we have only accepted QQmlListReference. However, we can also pass a QQmlListProperty around as value. Pick-to: 6.2 6.3 6.4 Fixes: QTBUG-105137 Change-Id: I7d4cd3048b62594298f91013c4cda5ec864a28df Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Diffstat (limited to 'src/qmlmodels/qqmllistaccessor.cpp')
-rw-r--r--src/qmlmodels/qqmllistaccessor.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/qmlmodels/qqmllistaccessor.cpp b/src/qmlmodels/qqmllistaccessor.cpp
index 244a1b369d..d68d0a2b90 100644
--- a/src/qmlmodels/qqmllistaccessor.cpp
+++ b/src/qmlmodels/qqmllistaccessor.cpp
@@ -39,6 +39,7 @@ void QQmlListAccessor::setList(const QVariant &v)
d = d.value<QJSValue>().toVariant();
variantsType = d.metaType();
}
+
if (!d.isValid()) {
m_type = Invalid;
} else if (variantsType == QMetaType::fromType<QStringList>()) {
@@ -49,6 +50,9 @@ void QQmlListAccessor::setList(const QVariant &v)
m_type = VariantList;
} else if (variantsType == QMetaType::fromType<QList<QObject *>>()) {
m_type = ObjectList;
+ } else if (variantsType.flags() & QMetaType::IsQmlList) {
+ d = QVariant::fromValue(QQmlListReference(d));
+ m_type = ListProperty;
} else if (variantsType == QMetaType::fromType<QQmlListReference>()) {
m_type = ListProperty;
} else if (variantsType.flags() & QMetaType::PointerToQObject) {