aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmlmodels/qqmladaptormodel.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-27 10:21:11 +0200
commit981cb8a3e920c1c7321d5c8597f1b30c4aa9706f (patch)
tree6d1b5b651bdc2ad2614fe568cbdfc506796ff6fb /src/qmlmodels/qqmladaptormodel.cpp
parentd83ad6fdbd0bcc363df449abab91dfbba25fecbc (diff)
QQmlListAccessor: Accept QQmlListProperty
So far we have only accepted QQmlListReference. However, we can also pass a QQmlListProperty around as value. Fixes: QTBUG-105137 Change-Id: I7d4cd3048b62594298f91013c4cda5ec864a28df Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> (cherry picked from commit 6ea2a1cdb728635f9bd3cf239f751d4e88610881)
Diffstat (limited to 'src/qmlmodels/qqmladaptormodel.cpp')
-rw-r--r--src/qmlmodels/qqmladaptormodel.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/qmlmodels/qqmladaptormodel.cpp b/src/qmlmodels/qqmladaptormodel.cpp
index 65feb5c6cf..d7b4bc2531 100644
--- a/src/qmlmodels/qqmladaptormodel.cpp
+++ b/src/qmlmodels/qqmladaptormodel.cpp
@@ -967,7 +967,9 @@ void QQmlAdaptorModel::setModel(const QVariant &variant, QObject *)
{
accessors->cleanup(*this);
+ // Don't use variant anymore after this. list may transform it.
list.setList(variant);
+
modelStrongReference.clear();
if (QObject *object = qvariant_cast<QObject *>(list.list())) {
@@ -979,7 +981,7 @@ void QQmlAdaptorModel::setModel(const QVariant &variant, QObject *)
else
accessors = new VDMObjectDelegateDataType;
} else if (list.type() == QQmlListAccessor::ListProperty) {
- auto object = static_cast<const QQmlListReference *>(variant.constData())->object();
+ auto object = static_cast<const QQmlListReference *>(list.list().constData())->object();
if (QQmlData *ddata = QQmlData::get(object))
modelStrongReference = ddata->jsWrapper;
setObject(object);