aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4engine.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2025-01-22 10:59:36 +0100
committerUlf Hermann <ulf.hermann@qt.io>2025-01-24 20:30:23 +0100
commit3108c58b97074b68ba48f452955727c67c4f77bc (patch)
tree34a367b34b83897698915f6582fe8f732a15a29f /src/qml/jsruntime/qv4engine.cpp
parent99052f73d7a1d4e36af07bf26472c3785e9f2fdb (diff)
QtQml: Add conversion code for QQmlListProperty to other lists
We have the same conversion code already for lists of value types and JavaScript arrays. Specialize the common cases of QObjectList and QQmlListProperty<QObject>. Pick-to: 6.9 6.8 Fixes: QTBUG-133047 Change-Id: I10826d4a965e18471a486e19befef961ec9a4a6e Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4engine.cpp')
-rw-r--r--src/qml/jsruntime/qv4engine.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp
index b952888859..334ef96023 100644
--- a/src/qml/jsruntime/qv4engine.cpp
+++ b/src/qml/jsruntime/qv4engine.cpp
@@ -2728,10 +2728,20 @@ bool ExecutionEngine::metaTypeFromJS(const Value &value, QMetaType metaType, voi
}
const auto wrapperPrivate = wrapper->d();
- if (wrapperPrivate->propertyType() == metaType) {
+ if (metaType == QMetaType::fromType<QQmlListProperty<QObject> *>()
+ || metaType == wrapperPrivate->propertyType()) {
*reinterpret_cast<QQmlListProperty<QObject> *>(data) = *wrapperPrivate->property();
return true;
}
+
+ if (metaType == QMetaType::fromType<QObjectList>()) {
+ *reinterpret_cast<QObjectList *>(data)
+ = wrapperPrivate->property()->toList<QObjectList>();
+ return true;
+ }
+
+ if (convertToIterable(metaType, data, wrapper))
+ return true;
}
if (const QQmlValueTypeWrapper *vtw = value.as<QQmlValueTypeWrapper>()) {