From a18e81dd1311811eb1227cf46d253ae647a9fbdd Mon Sep 17 00:00:00 2001 From: Cristian Maureira-Fredes Date: Fri, 26 Jan 2018 09:47:48 +0100 Subject: Fix QTabWidget.clear to avoid double obj removal Replacing shiboken call setParent with releaseOwnership so Python will not delete the underlying C++ object. A test case is provided to check that the error is not happening. Task-number: PYSIDE-213 Change-Id: Ic0f383c3d93b905885f76788d32d62ba37ed9d2f Reviewed-by: Alexandru Croitor --- sources/pyside2/PySide2/QtWidgets/typesystem_widgets_common.xml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'sources/pyside2/PySide2/QtWidgets') diff --git a/sources/pyside2/PySide2/QtWidgets/typesystem_widgets_common.xml b/sources/pyside2/PySide2/QtWidgets/typesystem_widgets_common.xml index 9d3e70be2..1663e4f4e 100644 --- a/sources/pyside2/PySide2/QtWidgets/typesystem_widgets_common.xml +++ b/sources/pyside2/PySide2/QtWidgets/typesystem_widgets_common.xml @@ -2507,10 +2507,13 @@ + Shiboken::BindingManager& bm = Shiboken::BindingManager::instance(); for (int i = 0; i < %CPPSELF.count(); i++) { QWidget* widget = %CPPSELF.widget(i); - Shiboken::AutoDecRef pyWidget(%CONVERTTOPYTHON[QWidget*](widget)); - Shiboken::Object::setParent(0, pyWidget); + if (bm.hasWrapper(widget)) { + Shiboken::AutoDecRef pyWidget(%CONVERTTOPYTHON[QWidget*](widget)); + Shiboken::Object::releaseOwnership(pyWidget); + } } %CPPSELF.%FUNCTION_NAME(); -- cgit v1.2.3