aboutsummaryrefslogtreecommitdiffstats
path: root/PySide/QtGui
diff options
context:
space:
mode:
Diffstat (limited to 'PySide/QtGui')
-rw-r--r--PySide/QtGui/glue/wid_conversions.h26
1 files changed, 25 insertions, 1 deletions
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