aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside2
diff options
context:
space:
mode:
Diffstat (limited to 'sources/pyside2')
-rw-r--r--sources/pyside2/PySide2/QtWidgets/typesystem_widgets_common.xml16
-rw-r--r--sources/pyside2/tests/QtWidgets/qlistwidget_test.py7
2 files changed, 23 insertions, 0 deletions
diff --git a/sources/pyside2/PySide2/QtWidgets/typesystem_widgets_common.xml b/sources/pyside2/PySide2/QtWidgets/typesystem_widgets_common.xml
index 2c380dacb..92ff3c08b 100644
--- a/sources/pyside2/PySide2/QtWidgets/typesystem_widgets_common.xml
+++ b/sources/pyside2/PySide2/QtWidgets/typesystem_widgets_common.xml
@@ -2149,6 +2149,22 @@
<parent index="this" action="remove"/>
</modify-argument>
</modify-function>
+ <modify-function signature="clear()">
+ <inject-code class="target" position="beginning">
+ Shiboken::BindingManager &amp;bm = Shiboken::BindingManager::instance();
+ PyObject *pyObj;
+ for (int i = 0; i &lt; %CPPSELF.count(); i++) {
+ QListWidgetItem *item = %CPPSELF.item(i);
+ if ((pyObj = reinterpret_cast&lt;PyObject*&gt;(bm.retrieveWrapper(item))) != 0) {
+ Py_INCREF(pyObj);
+ Shiboken::Object::setParent(NULL, pyObj);
+ Shiboken::Object::invalidate(pyObj);
+ Py_DECREF(pyObj);
+ }
+ }
+ %CPPSELF.%FUNCTION_NAME();
+ </inject-code>
+ </modify-function>
</object-type>
<object-type name="QWidget">
diff --git a/sources/pyside2/tests/QtWidgets/qlistwidget_test.py b/sources/pyside2/tests/QtWidgets/qlistwidget_test.py
index b89d2f77c..063623b61 100644
--- a/sources/pyside2/tests/QtWidgets/qlistwidget_test.py
+++ b/sources/pyside2/tests/QtWidgets/qlistwidget_test.py
@@ -78,5 +78,12 @@ class QListWidgetTest(UsesQApplication):
self.app.exec_()
self.assertEqual(lst.count(), 1)
+ def testClear(self):
+ lst = QtWidgets.QListWidget()
+ lst.addItem("foo")
+ item = lst.item(0)
+ self.assertIsNone(lst.clear())
+ self.assertRaises(RuntimeError, lambda: item.text())
+
if __name__ == '__main__':
unittest.main()