diff options
-rw-r--r-- | sources/pyside2/PySide2/QtWidgets/typesystem_widgets_common.xml | 16 | ||||
-rw-r--r-- | sources/pyside2/tests/QtWidgets/qlistwidget_test.py | 7 |
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 &bm = Shiboken::BindingManager::instance(); + PyObject *pyObj; + for (int i = 0; i < %CPPSELF.count(); i++) { + QListWidgetItem *item = %CPPSELF.item(i); + if ((pyObj = reinterpret_cast<PyObject*>(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() |