diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2022-07-25 14:24:19 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2022-07-27 10:21:11 +0200 |
commit | 981cb8a3e920c1c7321d5c8597f1b30c4aa9706f (patch) | |
tree | 6d1b5b651bdc2ad2614fe568cbdfc506796ff6fb /src/qmlmodels/qqmladaptormodel.cpp | |
parent | d83ad6fdbd0bcc363df449abab91dfbba25fecbc (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.cpp | 4 |
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); |