summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Erik Nilsen <bjorn.nilsen@nokia.com>2009-07-02 07:56:13 (GMT)
committerBjørn Erik Nilsen <bjorn.nilsen@nokia.com>2009-07-02 07:56:13 (GMT)
commit5fc3fe2e3f04475ac8c0e3287af6042bd8b67c57 (patch)
tree60c665a45a0839f349aa5cff326da0161bf21d57
parent2b9294a2b47c4a193ef83be60a07a3e61b8531b4 (diff)
downloadQt-5fc3fe2e3f04475ac8c0e3287af6042bd8b67c57.zip
Qt-5fc3fe2e3f04475ac8c0e3287af6042bd8b67c57.tar.gz
Qt-5fc3fe2e3f04475ac8c0e3287af6042bd8b67c57.tar.bz2
Dont include untransformable graphics items twice.
This revertes d39a62720ba67a0fa6e4e37519d22f14c7b7404e (we had to do it with the old implementation, but the new one have untransformable items included in the indexed list. The only difference is that untransformable items are also in the untransformable list; otherwise in the bsp tree). Auto-test included.
-rw-r--r--src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp1
-rw-r--r--tests/auto/qgraphicssceneindex/tst_qgraphicssceneindex.cpp39
2 files changed, 39 insertions, 1 deletions
diff --git a/src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp b/src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp
index ff9a3da..c8d755e 100644
--- a/src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp
+++ b/src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp
@@ -606,7 +606,6 @@ QList<QGraphicsItem *> QGraphicsSceneBspTreeIndex::items(Qt::SortOrder order) co
itemList << item;
}
}
- itemList += d->untransformableItems;
if (order != -1) {
//We sort descending order
d->sortItems(&itemList, order, d->sortCacheEnabled);
diff --git a/tests/auto/qgraphicssceneindex/tst_qgraphicssceneindex.cpp b/tests/auto/qgraphicssceneindex/tst_qgraphicssceneindex.cpp
index 9d0675d..3ce5b16 100644
--- a/tests/auto/qgraphicssceneindex/tst_qgraphicssceneindex.cpp
+++ b/tests/auto/qgraphicssceneindex/tst_qgraphicssceneindex.cpp
@@ -65,6 +65,7 @@ private slots:
void movingItems_data();
void movingItems();
void connectedToSceneRectChanged();
+ void items();
private:
void common_data();
@@ -228,5 +229,43 @@ void tst_QGraphicsSceneIndex::connectedToSceneRectChanged()
QCOMPARE(scene.receivers(SIGNAL(sceneRectChanged(const QRectF&))), 1);
}
+void tst_QGraphicsSceneIndex::items()
+{
+ QGraphicsScene scene;
+ QGraphicsItem *item1 = scene.addRect(0, 0, 10, 10);
+ QGraphicsItem *item2 = scene.addRect(10, 10, 10, 10);
+ QCOMPARE(scene.items().size(), 2);
+
+ // Move from unindexed items into bsp tree.
+ QTest::qWait(50);
+ QCOMPARE(scene.items().size(), 2);
+
+ // Add untransformable item.
+ QGraphicsItem *item3 = new QGraphicsRectItem(QRectF(20, 20, 10, 10));
+ item3->setFlag(QGraphicsItem::ItemIgnoresTransformations);
+ scene.addItem(item3);
+ QCOMPARE(scene.items().size(), 3);
+
+ // Move from unindexed items into untransformable items.
+ QTest::qWait(50);
+ QCOMPARE(scene.items().size(), 3);
+
+ // Move from untransformable items into unindexed items.
+ item3->setFlag(QGraphicsItem::ItemIgnoresTransformations, false);
+ QCOMPARE(scene.items().size(), 3);
+ QTest::qWait(50);
+ QCOMPARE(scene.items().size(), 3);
+
+ // Make all items untransformable.
+ item1->setFlag(QGraphicsItem::ItemIgnoresTransformations);
+ item2->setParentItem(item1);
+ item3->setParentItem(item2);
+ QCOMPARE(scene.items().size(), 3);
+
+ // Move from unindexed items into untransformable items.
+ QTest::qWait(50);
+ QCOMPARE(scene.items().size(), 3);
+}
+
QTEST_MAIN(tst_QGraphicsSceneIndex)
#include "tst_qgraphicssceneindex.moc"