From 97841a5d5ade97876db056c2a7db486684769d01 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Tue, 14 Feb 2023 13:06:30 +0100 Subject: Improve backward support Do both variant conversions and qjsonvalue conversions. Change-Id: I655395aa64c83ef62e8062d0820fdff437ebb156 Reviewed-by: Allan Sandfeld Jensen --- src/webchannel/qmetaobjectpublisher.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/webchannel/qmetaobjectpublisher.cpp b/src/webchannel/qmetaobjectpublisher.cpp index c956676..e641109 100644 --- a/src/webchannel/qmetaobjectpublisher.cpp +++ b/src/webchannel/qmetaobjectpublisher.cpp @@ -793,16 +793,16 @@ QVariant QMetaObjectPublisher::toVariant(const QJsonValue &value, int targetType return QVariant(target, reinterpret_cast(&flagsValue)); } - QVariant variant = QJsonValue::fromVariant(value); - // Try explicit conversion to the target type first. If that fails, fall - // back to generic conversion + QVariant variant = value.toVariant(); + // Try variant conversion to the target type first. If that fails, + // try conversion over QJsonvalue. if (auto converted = variant; converted.convert(target)) { variant = std::move(converted); - } else { - if (targetType != QMetaType::QVariant) { + } else if (targetType != QMetaType::QVariant) { + if (QVariant converted = value; converted.convert(target)) + variant = std::move(converted); + else qWarning() << "Could not convert argument" << value << "to target type" << target.name() << '.'; - } - variant = value.toVariant(); } return unwrapVariant(variant); } -- cgit v1.2.1