diff options
Diffstat (limited to 'PySide/QtCore')
-rw-r--r-- | PySide/QtCore/qvariant_conversions.h | 31 | ||||
-rw-r--r-- | PySide/QtCore/typesystem_core.xml | 12 |
2 files changed, 12 insertions, 31 deletions
diff --git a/PySide/QtCore/qvariant_conversions.h b/PySide/QtCore/qvariant_conversions.h index cd2ab8da0..f0f78a077 100644 --- a/PySide/QtCore/qvariant_conversions.h +++ b/PySide/QtCore/qvariant_conversions.h @@ -1,33 +1,14 @@ // We use this thin wrapper instead of the plain PyObject pointer to avoid conflicts with specializations of T* // in QVariant. -struct PyObjectHolder +struct PyQt_PyObject { PyObject* m_me; - PyObjectHolder(PyObject* me) : m_me(me) {} - PyObjectHolder() : m_me(Py_None) {} + PyQt_PyObject(PyObject* me) : m_me(me) {} + PyQt_PyObject() : m_me(Py_None) {} operator PyObject*() { return m_me; } }; -/** - * Q_DECLARE_METATYPE(PyObjectHolder); - * Use the expanded version of Q_DECLARE_METATYPE macro to define a typename - * compatible with PyQt4 - **/ -QT_BEGIN_NAMESPACE -template <> -struct QMetaTypeId< PyObjectHolder > -{ - enum { Defined = 1 }; - static int qt_metatype_id() - { - static QBasicAtomicInt metatype_id = Q_BASIC_ATOMIC_INITIALIZER(0); - if (!metatype_id) - metatype_id = - qRegisterMetaType<PyObjectHolder>("PyQt_PyObject"); - return metatype_id; - } -}; -QT_END_NAMESPACE +Q_DECLARE_METATYPE(PyQt_PyObject) namespace Shiboken { @@ -64,7 +45,7 @@ inline QVariant Converter<QVariant>::toCpp(PyObject* pyObj) } else if (!Shiboken::isShibokenType(pyObj) || Shiboken::isUserType(pyObj)) { // QVariant(User class) Py_INCREF(pyObj); - return QVariant::fromValue<PyObjectHolder>(pyObj); + return QVariant::fromValue<PyQt_PyObject>(pyObj); } else { // a class supported by QVariant? const char* typeName = pyObj->ob_type->tp_name; @@ -88,7 +69,7 @@ inline QVariant Converter<QVariant>::toCpp(PyObject* pyObj) } // Is a shiboken type not known by Qt Py_INCREF(pyObj); - return QVariant::fromValue<PyObjectHolder>(pyObj); + return QVariant::fromValue<PyQt_PyObject>(pyObj); } } diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index 186be106a..e64006c0e 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -1519,8 +1519,8 @@ <add-function signature="toPyObject()" return-type="PyObject*"> <inject-code class="target" position="beginning"> uint typeId = %CPPSELF.userType(); - if (typeId == qMetaTypeId<PyObjectHolder>()) { - %PYARG_0 = %CPPSELF.value<PyObjectHolder>(); + if (typeId == qMetaTypeId<PyQt_PyObject>()) { + %PYARG_0 = %CPPSELF.value<PyQt_PyObject>(); } else if (typeId == QVariant::String) { %PYARG_0 = %CONVERTTOPYTHON[QString](%CPPSELF.toString()); } else { @@ -1534,9 +1534,9 @@ if (%CPPSELF.isNull()) { %PYARG_0 = Py_None; Py_INCREF(Py_None); - } else if (%CPPSELF.userType() == qMetaTypeId<PyObjectHolder>()) { + } else if (%CPPSELF.userType() == qMetaTypeId<PyQt_PyObject>()) { // emulate PyQt4 behaviour - PyObject* obj = %CPPSELF.value<PyObjectHolder>(); + PyObject* obj = %CPPSELF.value<PyQt_PyObject>(); if (PySequence_Check(obj)) %PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE]("QVariantList"); } @@ -1546,8 +1546,8 @@ </modify-function> <modify-function signature="toList()const"> <inject-code class="target" position="beginning"> - if (%CPPSELF.userType() == qMetaTypeId<PyObjectHolder>()) { - PyObject* val = %CPPSELF.value<PyObjectHolder>(); + if (%CPPSELF.userType() == qMetaTypeId<PyQt_PyObject>()) { + PyObject* val = %CPPSELF.value<PyQt_PyObject>(); if (PySequence_Check(val)) { %PYARG_0 = val; Py_INCREF(val); |