From 1e5643d42eb7165aa6097bd5ccfcb4eb5e1477ac Mon Sep 17 00:00:00 2001 From: Cristian Maureira-Fredes Date: Fri, 8 Feb 2019 12:05:19 +0100 Subject: Return PyObject wrapper when not valid QVariant When resolving the meta type of QVariant we did not have a fallback case. So we had a NoneType when none of the converters worked. These changes allow to return a PyObjectWrapper of the object instead of NoneType. This allow users to use any type as QVariant. Change-Id: I18da3f10f6839975fdc0bf2ac62f6bd7063312df Fixes: PYSIDE-45 Reviewed-by: Christian Tismer --- sources/pyside2/PySide2/glue/qtcore.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/sources/pyside2/PySide2/glue/qtcore.cpp b/sources/pyside2/PySide2/glue/qtcore.cpp index ca88b9740..629484458 100644 --- a/sources/pyside2/PySide2/glue/qtcore.cpp +++ b/sources/pyside2/PySide2/glue/qtcore.cpp @@ -1618,12 +1618,16 @@ double in = %CONVERTTOCPP[double](%in); // a class supported by QVariant? int typeCode; const char *typeName = QVariant_resolveMetaType(Py_TYPE(%in), &typeCode); -if (!typeCode || !typeName) - return; -QVariant var(typeCode, (void*)0); -Shiboken::Conversions::SpecificConverter converter(typeName); -converter.toCpp(pyIn, var.data()); -%out = var; +if (!typeCode || !typeName) { + // If the type was not encountered, return a default PyObjectWrapper + %out = QVariant::fromValue(PySide::PyObjectWrapper(%in)); +} +else { + QVariant var(typeCode, (void*)0); + Shiboken::Conversions::SpecificConverter converter(typeName); + converter.toCpp(pyIn, var.data()); + %out = var; +} // @snippet conversion-sbkobject // @snippet conversion-pydict -- cgit v1.2.3