diff options
| -rw-r--r-- | sources/pyside6/PySide6/QtDesigner/typesystem_designer.xml | 2 | ||||
| -rw-r--r-- | sources/shiboken6/generator/shiboken/cppgenerator.cpp | 12 |
2 files changed, 12 insertions, 2 deletions
diff --git a/sources/pyside6/PySide6/QtDesigner/typesystem_designer.xml b/sources/pyside6/PySide6/QtDesigner/typesystem_designer.xml index b1983677a..4235dfc0a 100644 --- a/sources/pyside6/PySide6/QtDesigner/typesystem_designer.xml +++ b/sources/pyside6/PySide6/QtDesigner/typesystem_designer.xml @@ -58,7 +58,6 @@ unexposed DomUI classes, we cannot generate a wrapper. --> <object-type name="QDesignerDnDItemInterface" disable-wrapper="yes"> <enum-type name="DropType"/> - <modify-function signature="QDesignerDnDItemInterface()" remove="all"/> </object-type> <object-type name="QDesignerDynamicPropertySheetExtension"/> <object-type name="QDesignerFormEditorInterface"/> @@ -71,7 +70,6 @@ <object-type name="QDesignerFormWindowInterface" disable-wrapper="yes"> <enum-type name="FeatureFlag" flags="Feature"/> <enum-type name="ResourceFileSaveMode"/> - <modify-function signature="QDesignerFormWindowInterface(QWidget*,QFlags<Qt::WindowType>)" remove="all"/> </object-type> <object-type name="QDesignerFormWindowManagerInterface"> <enum-type name="Action"/> diff --git a/sources/shiboken6/generator/shiboken/cppgenerator.cpp b/sources/shiboken6/generator/shiboken/cppgenerator.cpp index 5e09241e5..5a0d2a30f 100644 --- a/sources/shiboken6/generator/shiboken/cppgenerator.cpp +++ b/sources/shiboken6/generator/shiboken/cppgenerator.cpp @@ -1868,6 +1868,18 @@ void CppGenerator::writeConstructorWrapper(TextStream &s, const AbstractMetaFunc } if (metaClass->isAbstract()) { + // C++ Wrapper disabled: Abstract C++ class cannot be instantiated. + if (metaClass->typeEntry()->typeFlags().testFlag(ComplexTypeEntry::DisableWrapper)) { + s << "PyErr_SetString(PyExc_NotImplementedError,\n" << indent + << "\"Abstract class '" << metaClass->qualifiedCppName() + << "' cannot be instantiated since the wrapper has been disabled.\");\n" << outdent + << returnStatement(m_currentErrorCode) << outdent + << "\n}\n\n"; + return; + } + + // Refuse to instantiate Abstract C++ class (via C++ Wrapper) unless it is + // a Python-derived class for which type != myType. s << "if (type == myType) {\n" << indent << "PyErr_SetString(PyExc_NotImplementedError,\n" << indent << "\"'" << metaClass->qualifiedCppName() |
