diff options
author | aavit <eirik.aavitsland@digia.com> | 2014-10-21 12:21:06 +0200 |
---|---|---|
committer | Andreas Aardal Hanssen <andreas@hanssen.name> | 2014-10-24 22:02:18 +0200 |
commit | 6841dd6eccda88f08ad4c424fc9d5f9e400aaf43 (patch) | |
tree | ce01f9d5b0aa51e227b7d82e880af8b54ca1b728 /tests | |
parent | 9911550fa7fa58cfef66a33ccd8b1d0c531f848e (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')
-rw-r--r-- | tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp | 37 |
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 |