summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
diff options
context:
space:
mode:
authoraavit <eirik.aavitsland@digia.com>2014-10-21 12:21:06 +0200
committerAndreas Aardal Hanssen <andreas@hanssen.name>2014-10-24 22:02:18 +0200
commit6841dd6eccda88f08ad4c424fc9d5f9e400aaf43 (patch)
treece01f9d5b0aa51e227b7d82e880af8b54ca1b728 /tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
parent9911550fa7fa58cfef66a33ccd8b1d0c531f848e (diff)
QGraphicsScene: stabilize stacking order of toplevel items
Removing and adding toplevel items could result in invalid stacking order (not corresponding to insertion order). Task-number: QTBUG-19316 Change-Id: Ia8646784a2181cfa936b101e2adaf7e7e73bb83d Reviewed-by: Andreas Aardal Hanssen <andreas@hanssen.name>
Diffstat (limited to 'tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp')
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
index 70448f9813..bd1c6a0dc5 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
@@ -242,6 +242,7 @@ private slots:
void style();
void sorting_data();
void sorting();
+ void insertionOrder();
void changedSignal_data();
void changedSignal();
void stickyFocus_data();
@@ -3633,6 +3634,42 @@ void tst_QGraphicsScene::sorting()
<< t_1);
}
+void tst_QGraphicsScene::insertionOrder()
+{
+ QGraphicsScene scene;
+ const int numItems = 5;
+ QList<QGraphicsItem*> items;
+
+ for (int i = 0; i < numItems; ++i) {
+ QGraphicsRectItem* item = new QGraphicsRectItem(i * 20, i * 20, 200, 200);
+ item->setData(0, i);
+ items.append(item);
+ scene.addItem(item);
+ }
+
+ {
+ QList<QGraphicsItem*> itemList = scene.items();
+ QCOMPARE(itemList.count(), numItems);
+ for (int i = 0; i < itemList.count(); ++i) {
+ QCOMPARE(numItems-1-i, itemList.at(i)->data(0).toInt());
+ }
+ }
+
+ for (int i = 0; i < items.size(); ++i)
+ {
+ scene.removeItem(items.at(i));
+ scene.addItem(items.at(i));
+ }
+
+ {
+ QList<QGraphicsItem*> itemList = scene.items();
+ QCOMPARE(itemList.count(), numItems);
+ for (int i = 0; i < itemList.count(); ++i) {
+ QCOMPARE(numItems-1-i, itemList.at(i)->data(0).toInt());
+ }
+ }
+}
+
class ChangedListener : public QObject
{
Q_OBJECT