aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4sequenceobject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/jsruntime/qv4sequenceobject.cpp')
-rw-r--r--src/qml/jsruntime/qv4sequenceobject.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/qml/jsruntime/qv4sequenceobject.cpp b/src/qml/jsruntime/qv4sequenceobject.cpp
index 73fa2385fd..95ba210753 100644
--- a/src/qml/jsruntime/qv4sequenceobject.cpp
+++ b/src/qml/jsruntime/qv4sequenceobject.cpp
@@ -627,8 +627,14 @@ ReturnedValue SequencePrototype::newSequence(QV4::ExecutionEngine *engine, int s
return Encode::undefined();
}
-ReturnedValue SequencePrototype::fromVariant(QV4::ExecutionEngine *engine, const QVariant &v,
- bool *succeeded)
+ReturnedValue SequencePrototype::fromVariant(
+ QV4::ExecutionEngine *engine, const QVariant &v, bool *succeeded)
+{
+ return fromData(engine, v.metaType(), v.constData(), succeeded);
+}
+
+ReturnedValue SequencePrototype::fromData(
+ ExecutionEngine *engine, const QMetaType &type, const void *data, bool *succeeded)
{
QV4::Scope scope(engine);
// This function is called when assigning a sequence value to a normal JS var
@@ -637,11 +643,10 @@ ReturnedValue SequencePrototype::fromVariant(QV4::ExecutionEngine *engine, const
// QObject property.
const QQmlType qmlType = QQmlMetaType::qmlType(
- v.userType(), QQmlMetaType::TypeIdCategory::MetaType);
+ type.id(), QQmlMetaType::TypeIdCategory::MetaType);
if (qmlType.isSequentialContainer()) {
*succeeded = true;
- QV4::ScopedObject obj(scope, engine->memoryManager->allocate<QV4Sequence>(
- qmlType, v.data()));
+ QV4::ScopedObject obj(scope, engine->memoryManager->allocate<QV4Sequence>(qmlType, data));
return obj.asReturnedValue();
}