From a623a57d0660e4490c370da7167db3a794f5162e Mon Sep 17 00:00:00 2001 From: renatofilho Date: Wed, 10 Nov 2010 12:53:28 -0300 Subject: Fixed QVariant conversions for object types. Reviewer: Marcelo Lira Luciano Wolf --- PySide/QtCore/qvariant_conversions.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'PySide/QtCore') diff --git a/PySide/QtCore/qvariant_conversions.h b/PySide/QtCore/qvariant_conversions.h index b47e3892d..9363a25c5 100644 --- a/PySide/QtCore/qvariant_conversions.h +++ b/PySide/QtCore/qvariant_conversions.h @@ -18,7 +18,12 @@ struct Converter { if (PyObject_TypeCheck(type, &Shiboken::SbkBaseWrapperType_Type)) { Shiboken::SbkBaseWrapperType *sbkType = reinterpret_cast(type); - const char* typeName = sbkType->original_name; + QByteArray typeName(sbkType->original_name); + bool valueType = !typeName.endsWith("*"); + + // Do not convert user type of value + if (valueType && sbkType->is_user_type) + return QByteArray(); int obTypeId = QMetaType::type(typeName); if (obTypeId) { @@ -27,7 +32,7 @@ struct Converter } // Do not resolve types to value type - if (!QByteArray(typeName).endsWith("*")) + if (valueType) return QByteArray(); // find in base types @@ -81,7 +86,7 @@ struct Converter return convertToVariantList(pyObj); } else { // a class supported by QVariant? - if (Shiboken::isShibokenType(pyObj) && !Shiboken::isUserType(pyObj)) { + if (Shiboken::isShibokenType(pyObj)) { Shiboken::SbkBaseWrapperType *objType = reinterpret_cast(pyObj->ob_type); int typeCode = 0; QByteArray typeName = resolveMetaType(reinterpret_cast(objType), typeCode); -- cgit v1.2.3