diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-09-17 10:17:13 +0200 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2020-09-25 19:09:40 +0200 |
commit | fe27257a0722c777968c81027b65b0a7bda3f53e (patch) | |
tree | 68094cdf701c630f0941eef9a9dc64898a4a6373 | |
parent | 0cc0c8535b17adc01525b6d309c3e38fd46d7917 (diff) |
Adapt to changes in QMetaSequenceInterface and iterables
metaSequence() became metaContainer() and we should ask for canConvert()
as there are two ways to convert to a container.
Change-Id: Iba868491ff9d2cc8fc89de1cab29818b834b53f4
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
-rw-r--r-- | src/qml/jsruntime/qv4engine.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp index f8134d56c6..5afe7b5923 100644 --- a/src/qml/jsruntime/qv4engine.cpp +++ b/src/qml/jsruntime/qv4engine.cpp @@ -122,6 +122,7 @@ #include <private/qv4sqlerrors_p.h> #include <qqmlfile.h> #include <qmetatype.h> +#include <qsequentialiterable.h> #if USE(PTHREADS) # include <pthread.h> @@ -1581,22 +1582,21 @@ static QVariant toVariant(QV4::ExecutionEngine *e, const QV4::Value &value, int auto metaType = QMetaType(typeHint); retn = QVariant(metaType, nullptr); auto retnAsIterable = retn.value<QSequentialIterable>(); - if (retnAsIterable.metaSequence().canAddValue()) { - QMetaType valueMetaType = retnAsIterable.metaSequence().valueMetaType(); + if (retnAsIterable.metaContainer().canAddValue()) { + QMetaType valueMetaType = retnAsIterable.metaContainer().valueMetaType(); auto const length = a->getLength(); QV4::ScopedValue arrayValue(scope); for (qint64 i = 0; i < length; ++i) { arrayValue = a->get(i); QVariant asVariant; - if (QMetaType::hasRegisteredConverterFunction( - qMetaTypeId<QJSValue>(), valueMetaType.id())) { + if (QMetaType::canConvert(QMetaType::fromType<QJSValue>(), valueMetaType)) { // before attempting a conversion from the concrete types, // check if there exists a conversion from QJSValue -> out type // prefer that one for compatibility reasons asVariant = QVariant::fromValue(QJSValuePrivate::fromReturnedValue( arrayValue->asReturnedValue())); if (asVariant.convert(valueMetaType)) { - retnAsIterable.metaSequence().addValue(retn.data(), asVariant.constData()); + retnAsIterable.metaContainer().addValue(retn.data(), asVariant.constData()); continue; } } @@ -1614,7 +1614,7 @@ static QVariant toVariant(QV4::ExecutionEngine *e, const QV4::Value &value, int asVariant = QVariant(valueMetaType, nullptr); } } - retnAsIterable.metaSequence().addValue(retn.data(), asVariant.constData()); + retnAsIterable.metaContainer().addValue(retn.data(), asVariant.constData()); } return retn; } @@ -1846,7 +1846,7 @@ QV4::ReturnedValue QV4::ExecutionEngine::fromVariant(const QVariant &variant) return retn->asReturnedValue(); #endif - if (QMetaType::hasRegisteredConverterFunction(type, qMetaTypeId<QSequentialIterable>())) { + if (QMetaType::canConvert(variant.metaType(), QMetaType::fromType<QSequentialIterable>())) { QSequentialIterable lst = variant.value<QSequentialIterable>(); return sequentialIterableToJS(this, lst); } |