aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/quick/qquicklistview/tst_qquicklistview.cpp')
-rw-r--r--tests/auto/quick/qquicklistview/tst_qquicklistview.cpp170
1 files changed, 93 insertions, 77 deletions
diff --git a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp
index 8a3a23826d..48171266de 100644
--- a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp
+++ b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp
@@ -1,5 +1,5 @@
// Copyright (C) 2020 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
#include <QtCore/QStringListModel>
@@ -187,6 +187,7 @@ private slots:
void populateTransitions();
void populateTransitions_data();
+ void repositionFirstItemOnPopulateTransition();
void sizeTransitions();
void sizeTransitions_data();
@@ -1172,7 +1173,7 @@ void tst_QQuickListView::removed_more(const QUrl &source, QQuickItemView::Vertic
int firstVisibleIndex = -1;
for (int i=0; i<items.size(); i++) {
QQuickItem *item = findItem<QQuickItem>(contentItem, "wrapper", i);
- if (item && delegateVisible(item)) {
+ if (item && isDelegateVisible(item)) {
firstVisibleIndex = i;
break;
}
@@ -1404,7 +1405,7 @@ void tst_QQuickListView::moved(const QUrl &source, QQuickItemView::VerticalLayou
int firstVisibleIndex = -1;
for (int i=0; i<items.size(); i++) {
QQuickItem *item = findItem<QQuickItem>(contentItem, "wrapper", i);
- if (item && delegateVisible(item)) {
+ if (item && isDelegateVisible(item)) {
firstVisibleIndex = i;
break;
}
@@ -2739,7 +2740,7 @@ void tst_QQuickListView::sectionsSnap()
QTRY_VERIFY(listview != nullptr);
listview->setSnapMode(snapMode);
- QTRY_COMPARE(QQuickItemPrivate::get(listview)->polishScheduled, false);
+ QTRY_VERIFY(!QQuickItemPrivate::get(listview)->polishScheduled);
QTRY_COMPARE(listview->currentIndex(), 0);
QCOMPARE(listview->contentY(), qreal(-50));
@@ -2897,9 +2898,9 @@ void tst_QQuickListView::currentIndex()
// moving currentItem out of view should make it invisible
listview->setCurrentIndex(0);
- QTRY_VERIFY(delegateVisible(listview->currentItem()));
+ QTRY_VERIFY(isDelegateVisible(listview->currentItem()));
listview->setContentY(200);
- QTRY_VERIFY(!delegateVisible(listview->currentItem()));
+ QTRY_VERIFY(!isDelegateVisible(listview->currentItem()));
// empty model should reset currentIndex to -1
QaimModel emptyModel;
@@ -3131,37 +3132,37 @@ void tst_QQuickListView::itemListFlicker()
QQuickItem *item = findItem<QQuickItem>(contentItem, "item1");
QVERIFY(item);
- QVERIFY(delegateVisible(item));
+ QVERIFY(isDelegateVisible(item));
item = findItem<QQuickItem>(contentItem, "item2");
QVERIFY(item);
- QVERIFY(delegateVisible(item));
+ QVERIFY(isDelegateVisible(item));
item = findItem<QQuickItem>(contentItem, "item3");
QVERIFY(item);
- QVERIFY(delegateVisible(item));
+ QVERIFY(isDelegateVisible(item));
listview->setCurrentIndex(1);
item = findItem<QQuickItem>(contentItem, "item1");
QVERIFY(item);
- QVERIFY(delegateVisible(item));
+ QVERIFY(isDelegateVisible(item));
item = findItem<QQuickItem>(contentItem, "item2");
QVERIFY(item);
- QVERIFY(delegateVisible(item));
+ QVERIFY(isDelegateVisible(item));
item = findItem<QQuickItem>(contentItem, "item3");
QVERIFY(item);
- QVERIFY(delegateVisible(item));
+ QVERIFY(isDelegateVisible(item));
listview->setCurrentIndex(2);
item = findItem<QQuickItem>(contentItem, "item1");
QVERIFY(item);
- QVERIFY(delegateVisible(item));
+ QVERIFY(isDelegateVisible(item));
item = findItem<QQuickItem>(contentItem, "item2");
QVERIFY(item);
- QVERIFY(delegateVisible(item));
+ QVERIFY(isDelegateVisible(item));
item = findItem<QQuickItem>(contentItem, "item3");
QVERIFY(item);
- QVERIFY(delegateVisible(item));
+ QVERIFY(isDelegateVisible(item));
}
void tst_QQuickListView::cacheBuffer()
@@ -4406,7 +4407,7 @@ void tst_QQuickListView::resizeView()
if (!item) qWarning() << "Item" << i << "not found";
QTRY_VERIFY(item);
QTRY_COMPARE(item->y(), i*20.);
- QCOMPARE(delegateVisible(item), i < 11); // inside view visible, outside not visible
+ QCOMPARE(isDelegateVisible(item), i < 11); // inside view visible, outside not visible
}
// ensure items outside view become invisible
@@ -4419,7 +4420,7 @@ void tst_QQuickListView::resizeView()
if (!item) qWarning() << "Item" << i << "not found";
QTRY_VERIFY(item);
QTRY_COMPARE(item->y(), i*20.);
- QCOMPARE(delegateVisible(item), i < 6); // inside view visible, outside not visible
+ QCOMPARE(isDelegateVisible(item), i < 6); // inside view visible, outside not visible
}
}
@@ -5058,14 +5059,14 @@ void tst_QQuickListView::test_mirroring()
QCOMPARE(listviewA->layoutDirection(), listviewA->effectiveLayoutDirection());
// LTR != RTL
- foreach (const QString objectName, objectNames)
+ for (const QString &objectName : std::as_const(objectNames))
QVERIFY(findItem<QQuickItem>(listviewA, objectName)->x() != findItem<QQuickItem>(listviewB, objectName)->x());
listviewA->setProperty("layoutDirection", Qt::LeftToRight);
listviewB->setProperty("layoutDirection", Qt::LeftToRight);
// LTR == LTR
- foreach (const QString objectName, objectNames)
+ for (const QString &objectName : std::as_const(objectNames))
QCOMPARE(findItem<QQuickItem>(listviewA, objectName)->x(), findItem<QQuickItem>(listviewB, objectName)->x());
QCOMPARE(listviewB->layoutDirection(), listviewB->effectiveLayoutDirection());
@@ -5073,25 +5074,25 @@ void tst_QQuickListView::test_mirroring()
QVERIFY(listviewB->layoutDirection() != listviewB->effectiveLayoutDirection());
// LTR != LTR+mirror
- foreach (const QString objectName, objectNames)
+ for (const QString &objectName : std::as_const(objectNames))
QVERIFY(findItem<QQuickItem>(listviewA, objectName)->x() != findItem<QQuickItem>(listviewB, objectName)->x());
listviewA->setProperty("layoutDirection", Qt::RightToLeft);
// RTL == LTR+mirror
- foreach (const QString objectName, objectNames)
+ for (const QString &objectName : std::as_const(objectNames))
QCOMPARE(findItem<QQuickItem>(listviewA, objectName)->x(), findItem<QQuickItem>(listviewB, objectName)->x());
listviewB->setProperty("layoutDirection", Qt::RightToLeft);
// RTL != RTL+mirror
- foreach (const QString objectName, objectNames)
+ for (const QString &objectName : std::as_const(objectNames))
QVERIFY(findItem<QQuickItem>(listviewA, objectName)->x() != findItem<QQuickItem>(listviewB, objectName)->x());
listviewA->setProperty("layoutDirection", Qt::LeftToRight);
// LTR == RTL+mirror
- foreach (const QString objectName, objectNames)
+ for (const QString &objectName : std::as_const(objectNames))
QCOMPARE(findItem<QQuickItem>(listviewA, objectName)->x(), findItem<QQuickItem>(listviewB, objectName)->x());
}
@@ -6495,30 +6496,30 @@ void tst_QQuickListView::unrequestedVisibility()
const QString wrapperObjectName = QStringLiteral("wrapper");
QQuickItem *item = findItem<QQuickItem>(leftContent, wrapperObjectName, 1);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(rightContent, wrapperObjectName, 1);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), false);
+ QCOMPARE(isDelegateVisible(item), false);
item = findItem<QQuickItem>(leftContent, wrapperObjectName, 19);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), false);
+ QCOMPARE(isDelegateVisible(item), false);
item = findItem<QQuickItem>(rightContent, wrapperObjectName, 19);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(leftContent, wrapperObjectName, 16);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(leftContent, wrapperObjectName, 17);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), false);
+ QCOMPARE(isDelegateVisible(item), false);
item = findItem<QQuickItem>(rightContent, wrapperObjectName, 3);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), false);
+ QCOMPARE(isDelegateVisible(item), false);
item = findItem<QQuickItem>(rightContent, wrapperObjectName, 4);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
rightview->setCurrentIndex(0);
@@ -6527,10 +6528,10 @@ void tst_QQuickListView::unrequestedVisibility()
item = findItem<QQuickItem>(leftContent, wrapperObjectName, 1);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(rightContent, wrapperObjectName, 1);
QVERIFY(item);
- QTRY_COMPARE(delegateVisible(item), true);
+ QTRY_COMPARE(isDelegateVisible(item), true);
QVERIFY(!findItem<QQuickItem>(leftContent, wrapperObjectName, 19));
QVERIFY(!findItem<QQuickItem>(rightContent, wrapperObjectName, 19));
@@ -6542,123 +6543,123 @@ void tst_QQuickListView::unrequestedVisibility()
item = findItem<QQuickItem>(leftContent, wrapperObjectName, 1);
QVERIFY(item);
- QTRY_COMPARE(delegateVisible(item), false);
+ QTRY_COMPARE(isDelegateVisible(item), false);
item = findItem<QQuickItem>(rightContent, wrapperObjectName, 1);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(leftContent, wrapperObjectName, 19);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(rightContent, wrapperObjectName, 19);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), false);
+ QCOMPARE(isDelegateVisible(item), false);
item = findItem<QQuickItem>(leftContent, wrapperObjectName, 3);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), false);
+ QCOMPARE(isDelegateVisible(item), false);
item = findItem<QQuickItem>(leftContent, wrapperObjectName, 4);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(rightContent, wrapperObjectName, 16);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(rightContent, wrapperObjectName, 17);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), false);
+ QCOMPARE(isDelegateVisible(item), false);
model.moveItems(19, 1, 1);
QVERIFY(QQuickTest::qWaitForPolish(leftview));
QTRY_VERIFY((item = findItem<QQuickItem>(leftContent, wrapperObjectName, 1)));
- QCOMPARE(delegateVisible(item), false);
+ QCOMPARE(isDelegateVisible(item), false);
item = findItem<QQuickItem>(rightContent, wrapperObjectName, 1);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(leftContent, wrapperObjectName, 19);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(rightContent, wrapperObjectName, 19);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), false);
+ QCOMPARE(isDelegateVisible(item), false);
item = findItem<QQuickItem>(leftContent, wrapperObjectName, 4);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), false);
+ QCOMPARE(isDelegateVisible(item), false);
item = findItem<QQuickItem>(leftContent, wrapperObjectName, 5);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(rightContent, wrapperObjectName, 16);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(rightContent, wrapperObjectName, 17);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), false);
+ QCOMPARE(isDelegateVisible(item), false);
model.moveItems(3, 4, 1);
QVERIFY(QQuickTest::qWaitForPolish(leftview));
item = findItem<QQuickItem>(leftContent, wrapperObjectName, 4);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), false);
+ QCOMPARE(isDelegateVisible(item), false);
item = findItem<QQuickItem>(leftContent, wrapperObjectName, 5);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(rightContent, wrapperObjectName, 16);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(rightContent, wrapperObjectName, 17);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), false);
+ QCOMPARE(isDelegateVisible(item), false);
model.moveItems(4, 3, 1);
QVERIFY(QQuickTest::qWaitForPolish(leftview));
item = findItem<QQuickItem>(leftContent, wrapperObjectName, 4);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), false);
+ QCOMPARE(isDelegateVisible(item), false);
item = findItem<QQuickItem>(leftContent, wrapperObjectName, 5);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(rightContent, wrapperObjectName, 16);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(rightContent, wrapperObjectName, 17);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), false);
+ QCOMPARE(isDelegateVisible(item), false);
model.moveItems(16, 17, 1);
QVERIFY(QQuickTest::qWaitForPolish(leftview));
item = findItem<QQuickItem>(leftContent, wrapperObjectName, 4);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), false);
+ QCOMPARE(isDelegateVisible(item), false);
item = findItem<QQuickItem>(leftContent, wrapperObjectName, 5);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(rightContent, wrapperObjectName, 16);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(rightContent, wrapperObjectName, 17);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), false);
+ QCOMPARE(isDelegateVisible(item), false);
model.moveItems(17, 16, 1);
QVERIFY(QQuickTest::qWaitForPolish(leftview));
item = findItem<QQuickItem>(leftContent, wrapperObjectName, 4);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), false);
+ QCOMPARE(isDelegateVisible(item), false);
item = findItem<QQuickItem>(leftContent, wrapperObjectName, 5);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(rightContent, wrapperObjectName, 16);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(rightContent, wrapperObjectName, 17);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), false);
+ QCOMPARE(isDelegateVisible(item), false);
}
void tst_QQuickListView::populateTransitions()
@@ -6792,6 +6793,20 @@ void tst_QQuickListView::populateTransitions_data()
QTest::newRow("empty to start with, no populate") << false << false << false;
}
+// QTBUG-111050
+/* Reposition first visible item in list view on populate transition
+ Note: Occurs only in BottomToTop or RightToLeft layout */
+void tst_QQuickListView::repositionFirstItemOnPopulateTransition()
+{
+ QScopedPointer<QQuickView> window(createView());
+ window->setSource(testFileUrl("repositionListViewOnPopulateTransition.qml"));
+ window->show();
+ QVERIFY(QTest::qWaitForWindowExposed(window.data()));
+
+ QQuickListView *listview = qobject_cast<QQuickListView*>(window->rootObject());
+ QTRY_VERIFY(listview != nullptr);
+ QTRY_COMPARE(listview->contentY(), -100.0);
+}
/*
* Tests if the first visible item is not repositioned if the same item
@@ -7871,7 +7886,8 @@ void tst_QQuickListView::multipleDisplaced()
QTRY_VERIFY(listview->property("displaceTransitionsDone").toBool());
QVariantMap transitionsStarted = listview->property("displaceTransitionsStarted").toMap();
- foreach (const QString &name, transitionsStarted.keys()) {
+ const QStringList keys = transitionsStarted.keys();
+ for (const QString &name : keys) {
QVERIFY2(transitionsStarted[name] == 1,
qPrintable(QString("%1 was displaced %2 times").arg(name).arg(transitionsStarted[name].toInt())));
}
@@ -8241,24 +8257,24 @@ void tst_QQuickListView::displayMargin()
QQuickItem *item0 = findItem<QQuickItem>(content, "delegate", 0);
QVERIFY(item0);
- QCOMPARE(delegateVisible(item0), true);
+ QCOMPARE(isDelegateVisible(item0), true);
// the 14th item should be within the end margin
QQuickItem *item14 = findItem<QQuickItem>(content, "delegate", 13);
QVERIFY(item14);
- QCOMPARE(delegateVisible(item14), true);
+ QCOMPARE(isDelegateVisible(item14), true);
// the 15th item should be outside the end margin
QVERIFY(findItem<QQuickItem>(content, "delegate", 14) == nullptr);
// the first delegate should still be within the begin margin
listview->positionViewAtIndex(3, QQuickListView::Beginning);
- QCOMPARE(delegateVisible(item0), true);
+ QCOMPARE(isDelegateVisible(item0), true);
// the first delegate should now be outside the begin margin
listview->positionViewAtIndex(4, QQuickListView::Beginning);
- QCOMPARE(delegateVisible(item0), false);
+ QCOMPARE(isDelegateVisible(item0), false);
}
void tst_QQuickListView::negativeDisplayMargin()
@@ -8280,29 +8296,29 @@ void tst_QQuickListView::negativeDisplayMargin()
QQuickItem *item = findItem<QQuickItem>(content, "delegate", 0);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(content, "delegate", 7);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), true);
+ QCOMPARE(isDelegateVisible(item), true);
item = findItem<QQuickItem>(content, "delegate", 8);
QVERIFY(item);
- QCOMPARE(delegateVisible(item), false);
+ QCOMPARE(isDelegateVisible(item), false);
// Flick until contentY means that delegate8 should be visible
listview->setProperty("contentY", 500);
item = findItem<QQuickItem>(content, "delegate", 8);
QVERIFY(item);
- QTRY_COMPARE(delegateVisible(item), true);
+ QTRY_COMPARE(isDelegateVisible(item), true);
listview->setProperty("contentY", 1000);
QTRY_VERIFY((item = findItem<QQuickItem>(content, "delegate", 14)));
- QTRY_COMPARE(delegateVisible(item), true);
+ QTRY_COMPARE(isDelegateVisible(item), true);
listview->setProperty("contentY", 0);
QTRY_VERIFY(item = findItem<QQuickItem>(content, "delegate", 4));
- QTRY_COMPARE(delegateVisible(item), true);
+ QTRY_COMPARE(isDelegateVisible(item), true);
}
void tst_QQuickListView::highlightItemGeometryChanges()
@@ -8404,7 +8420,7 @@ void tst_QQuickListView::stickyPositioning()
listview->positionViewAtIndex(positionIndex, positionMode);
- foreach (const QPointF &offset, movement) {
+ for (const QPointF &offset : std::as_const(movement)) {
listview->setContentX(listview->contentX() + offset.x());
listview->setContentY(listview->contentY() + offset.y());
}