aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHugo Parente Lima <hugo.pl@gmail.com>2011-04-20 16:36:27 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:54:14 -0300
commit0f0124e54c22d46fa71722b9eff93ebb34816d4c (patch)
tree85ba3faab4e3bd4615aea4c586398b4308990f91
parentd7684d00e3a61c4d457b04521756296dfe56d8a4 (diff)
Fix bug 768 - "Method "QGraphicsItemGroup* QGraphicsScene::createItemGroup(const QList<QGraphicsItem*>& items)" missing"
Fix bug 769 - "Method "QGraphicsScene::destroyItemGroup(QGraphicsItemGroup* group)" missing" Reviewer: Marcelo Lira <marcelo.lira@openbossa.org>
-rw-r--r--PySide/QtGui/typesystem_gui_common.xml26
-rw-r--r--tests/QtGui/qgraphicsscene_test.py16
2 files changed, 38 insertions, 4 deletions
diff --git a/PySide/QtGui/typesystem_gui_common.xml b/PySide/QtGui/typesystem_gui_common.xml
index bbb4b0cf7..da919e870 100644
--- a/PySide/QtGui/typesystem_gui_common.xml
+++ b/PySide/QtGui/typesystem_gui_common.xml
@@ -3210,12 +3210,30 @@
<!-- ### Obsolete -->
<modify-function signature="drawItems(QPainter*,int,QGraphicsItem**,const QStyleOptionGraphicsItem*,QWidget*)" remove="all" />
- <!-- ### See bug 768 -->
- <modify-function signature="createItemGroup(const QList&lt;QGraphicsItem*&gt;&amp;)" remove="all"/>
- <!-- ### See bug 769 -->
- <modify-function signature="destroyItemGroup(QGraphicsItemGroup*)" remove="all"/>
<!-- ### -->
+ <modify-function signature="createItemGroup(const QList&lt;QGraphicsItem*&gt;&amp;)">
+ <modify-argument index="1">
+ <parent index="return" action="add" />
+ </modify-argument>
+ <modify-argument index="return">
+ <define-ownership owner="default"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="destroyItemGroup(QGraphicsItemGroup*)">
+ <inject-code>
+ Shiboken::AutoDecRef parent(%CONVERTTOPYTHON[QGraphicsItem*](%1->parentObject()));
+ foreach (QGraphicsItem* item, %1->children())
+ Shiboken::Object::setParent(parent, %CONVERTTOPYTHON[QGraphicsItem*](item));
+ %BEGIN_ALLOW_THREADS
+ %CPPSELF.%FUNCTION_NAME(%1);
+ %END_ALLOW_THREADS
+ // the arg was destroyed by Qt.
+ Shiboken::Object::invalidate(%PYARG_1);
+ </inject-code>
+ </modify-function>
+
<modify-function signature="contextMenuEvent(QGraphicsSceneContextMenuEvent*)">
<modify-argument index="1" invalidate-after-use="yes"/>
</modify-function>
diff --git a/tests/QtGui/qgraphicsscene_test.py b/tests/QtGui/qgraphicsscene_test.py
index 98177e75a..85f5004c6 100644
--- a/tests/QtGui/qgraphicsscene_test.py
+++ b/tests/QtGui/qgraphicsscene_test.py
@@ -148,5 +148,21 @@ class ItemRetrieve(UsesQApplication):
self.assertEqual(self.scene.itemAt(50, 150), self.bottomleft)
self.assertEqual(self.scene.itemAt(150, 150), self.bottomright)
+class TestGraphicsGroup(UsesQApplication):
+ def testIt(self):
+ scene = QGraphicsScene()
+ i1 = QGraphicsRectItem()
+ scene.addItem(i1)
+ i2 = QGraphicsRectItem(i1)
+ i3 = QGraphicsRectItem()
+ i4 = QGraphicsRectItem()
+ group = scene.createItemGroup((i2, i3, i4))
+ scene.removeItem(i1)
+ del i1 # this shouldn't delete i2
+ self.assertEqual(i2.scene(), scene)
+ scene.destroyItemGroup(group)
+ self.assertRaises(RuntimeError, group.type)
+
+
if __name__ == '__main__':
unittest.main()