diff options
Diffstat (limited to 'PySide')
-rw-r--r-- | PySide/QtCore/glue/hwnd_conversions.h | 22 | ||||
-rw-r--r-- | PySide/QtGui/glue/wid_conversions.h | 26 |
2 files changed, 47 insertions, 1 deletions
diff --git a/PySide/QtCore/glue/hwnd_conversions.h b/PySide/QtCore/glue/hwnd_conversions.h index 65b95e2fd..6dbaa8f4e 100644 --- a/PySide/QtCore/glue/hwnd_conversions.h +++ b/PySide/QtCore/glue/hwnd_conversions.h @@ -9,7 +9,14 @@ struct Converter<HWND> static bool isConvertible(PyObject* pyobj) { + if (pyobj == Py_None) + return true; + +#ifdef IS_PY3K + return PyCapsule_CheckExact(pyobj); +#else return PyCObject_Check(pyobj); +#endif } static inline PyObject* toPython(void* cppobj) @@ -21,12 +28,27 @@ struct Converter<HWND> static PyObject* toPython(HWND cppobj) { + if (!cppobj) + Py_RETURN_NONE; + +#ifdef IS_PY3K + return PyCapsule_New(cppobj, 0, 0); +#else return PyCObject_FromVoidPtr(cppobj, 0); +#endif } static HWND toCpp(PyObject* pyobj) { + if (pyobj == Py_None) + return 0; + +#ifdef IS_PY3K + return (HWND)PyCapsule_GetPointer(pyobj, 0); +#else return (HWND)PyCObject_AsVoidPtr(pyobj); +#endif } }; + } diff --git a/PySide/QtGui/glue/wid_conversions.h b/PySide/QtGui/glue/wid_conversions.h index 1abb5f288..183e682fe 100644 --- a/PySide/QtGui/glue/wid_conversions.h +++ b/PySide/QtGui/glue/wid_conversions.h @@ -1,4 +1,5 @@ #ifndef Q_WS_WIN + namespace Shiboken { template <> struct Converter<WId> @@ -10,7 +11,14 @@ struct Converter<WId> static bool isConvertible(PyObject* pyobj) { + if (pyobj == Py_None) + return true; + +#ifdef IS_PY3K + return PyCapsule_CheckExact(pyobj); +#else return PyCObject_Check(pyobj); +#endif } static inline PyObject* toPython(void* cppobj) @@ -22,13 +30,29 @@ struct Converter<WId> static PyObject* toPython(WId cppobj) { + if (!cppobj) + Py_RETURN_NONE; + +#ifdef IS_PY3K + return PyCapsule_New(cppobj, 0, 0); +#else return PyCObject_FromVoidPtr(cppobj, 0); +#endif } static WId toCpp(PyObject* pyobj) { - return (WId) PyCObject_AsVoidPtr(pyobj); + if (pyobj == Py_None) + return 0; + +#ifdef IS_PY3K + return (WId)PyCapsule_GetPointer(pyobj, 0); +#else + return (WId)PyCObject_AsVoidPtr(pyobj); +#endif } }; + } + #endif |