From fe27257a0722c777968c81027b65b0a7bda3f53e Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Thu, 17 Sep 2020 10:17:13 +0200 Subject: 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 --- src/qml/jsruntime/qv4engine.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/qml/jsruntime') 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 #include #include +#include #if USE(PTHREADS) # include @@ -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(); - 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(), valueMetaType.id())) { + if (QMetaType::canConvert(QMetaType::fromType(), 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())) { + if (QMetaType::canConvert(variant.metaType(), QMetaType::fromType())) { QSequentialIterable lst = variant.value(); return sequentialIterableToJS(this, lst); } -- cgit v1.2.3