aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sources/pyside6/PySide6/QtDesigner/typesystem_designer.xml2
-rw-r--r--sources/shiboken6/generator/shiboken/cppgenerator.cpp12
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&lt;Qt::WindowType&gt;)" 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()