aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquickrepeater
diff options
context:
space:
mode:
authorJan Arve Saether <jan-arve.saether@theqtcompany.com>2015-04-22 10:49:45 +0200
committerJan Arve Sæther <jan-arve.saether@theqtcompany.com>2015-04-28 07:41:56 +0000
commit55dc72f8cf47c6b32c1f172f4dffcd5a3bc743e6 (patch)
tree1d89b2f367b1fddf7530b1eeb542ea1228a4f05b /tests/auto/quick/qquickrepeater
parent11f67b80c4eab4b1e3eb8e6b1e8b69e7a60e42a9 (diff)
Make Repeater emit items with right stacking order
When listening for Component.onCompleted on the items emitted by the Repeater, the items' stacking order was not properly set up. The stacking order was corrected after Component.onCompleted was emitted, which was undesirable in some cases. Task-number: QTBUG-45423 Change-Id: Ib96b3de81db556b09fb5fc8bd27ce19223014f7e Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Diffstat (limited to 'tests/auto/quick/qquickrepeater')
-rw-r--r--tests/auto/quick/qquickrepeater/data/stackingorder.qml38
-rw-r--r--tests/auto/quick/qquickrepeater/tst_qquickrepeater.cpp19
2 files changed, 57 insertions, 0 deletions
diff --git a/tests/auto/quick/qquickrepeater/data/stackingorder.qml b/tests/auto/quick/qquickrepeater/data/stackingorder.qml
new file mode 100644
index 0000000000..41dadca0df
--- /dev/null
+++ b/tests/auto/quick/qquickrepeater/data/stackingorder.qml
@@ -0,0 +1,38 @@
+import QtQuick 2.0
+
+Item {
+ id: root
+ property bool stackingOrderOk: true
+
+ function verifyStackingOrder() {
+ var len = children.length
+ for (var i = 0; i < len; ++i) {
+ var expectedName;
+ if (i === 0) {
+ expectedName = "first"
+ } else if (i === len - 2) {
+ expectedName = "repeater"
+ } else if (i === len - 1) {
+ expectedName = "last"
+ } else {
+ expectedName = "middle" + (i - 1)
+ }
+ if (children[i].objectName !== expectedName)
+ stackingOrderOk = false
+ }
+ }
+ Item {
+ objectName: "first"
+ }
+ Repeater {
+ objectName: "repeater"
+ model: 1
+ Item {
+ objectName: "middle" + index
+ Component.onCompleted: { verifyStackingOrder();}
+ }
+ }
+ Item {
+ objectName: "last"
+ }
+}
diff --git a/tests/auto/quick/qquickrepeater/tst_qquickrepeater.cpp b/tests/auto/quick/qquickrepeater/tst_qquickrepeater.cpp
index b2039bd323..71b1ffa0d6 100644
--- a/tests/auto/quick/qquickrepeater/tst_qquickrepeater.cpp
+++ b/tests/auto/quick/qquickrepeater/tst_qquickrepeater.cpp
@@ -76,6 +76,7 @@ private slots:
void jsArrayChange();
void clearRemovalOrder();
void destroyCount();
+ void stackingOrder();
};
class TestObject : public QObject
@@ -894,6 +895,24 @@ void tst_QQuickRepeater::destroyCount()
QCOMPARE(repeater->property("componentCount").toInt(), 4);
}
+void tst_QQuickRepeater::stackingOrder()
+{
+ QQmlEngine engine;
+ QQmlComponent component(&engine, testFileUrl("stackingorder.qml"));
+
+ QQuickItem *rootObject = qobject_cast<QQuickItem*>(component.create());
+ QVERIFY(rootObject);
+
+ QQuickRepeater *repeater = findItem<QQuickRepeater>(rootObject, "repeater");
+ QVERIFY(repeater);
+ int count = 1;
+ do {
+ bool stackingOrderOk = rootObject->property("stackingOrderOk").toBool();
+ QVERIFY(stackingOrderOk);
+ repeater->setModel(QVariant(++count));
+ } while (count < 3);
+}
+
QTEST_MAIN(tst_QQuickRepeater)
#include "tst_qquickrepeater.moc"