diff options
Diffstat (limited to 'sources/pyside6/libpyside/pyside.cpp')
| -rw-r--r-- | sources/pyside6/libpyside/pyside.cpp | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/sources/pyside6/libpyside/pyside.cpp b/sources/pyside6/libpyside/pyside.cpp index 45044225c..4030673a5 100644 --- a/sources/pyside6/libpyside/pyside.cpp +++ b/sources/pyside6/libpyside/pyside.cpp @@ -458,15 +458,13 @@ std::size_t getSizeOfQObject(PyTypeObject *type) return retrieveTypeUserData(type)->cppObjSize; } -void initDynamicMetaObject(PyTypeObject *type, const QMetaObject *base, std::size_t cppObjSize) +static void initDynamicMetaObjectHelper(PyTypeObject *type, + TypeUserData *userData) { - //create DynamicMetaObject based on python type - auto *userData = new TypeUserData(reinterpret_cast<PyTypeObject *>(type), base, cppObjSize); - userData->mo.update(); Shiboken::ObjectType::setTypeUserData(type, userData, Shiboken::callCppDestructor<TypeUserData>); - //initialize staticQMetaObject property - void *metaObjectPtr = const_cast<QMetaObject *>(userData->mo.update()); + // initialize staticQMetaObject property + const void *metaObjectPtr = userData->mo.update(); static SbkConverter *converter = Shiboken::Conversions::getConverter("QMetaObject"); if (!converter) return; @@ -475,6 +473,11 @@ void initDynamicMetaObject(PyTypeObject *type, const QMetaObject *base, std::siz Shiboken::PyName::qtStaticMetaObject(), pyMetaObject); } +void initDynamicMetaObject(PyTypeObject *type, const QMetaObject *base, std::size_t cppObjSize) +{ + initDynamicMetaObjectHelper(type, new TypeUserData(base, cppObjSize)); +} + TypeUserData *retrieveTypeUserData(PyTypeObject *pyTypeObj) { if (!SbkObjectType_Check(pyTypeObj)) @@ -526,7 +529,9 @@ void initQObjectSubType(PyTypeObject *type, PyObject *args, PyObject * /* kwds * // PYSIDE-1463: Don't change feature selection durin subtype initialization. // This behavior is observed with PySide 6. PySide::Feature::Enable(false); - initDynamicMetaObject(type, userData->mo.update(), userData->cppObjSize); + // create DynamicMetaObject based on python type + auto *subTypeData = new TypeUserData(type, userData->mo.update(), userData->cppObjSize); + initDynamicMetaObjectHelper(type, subTypeData); PySide::Feature::Enable(true); } |
