diff options
Diffstat (limited to 'tests/auto/quick/qquicklistview')
32 files changed, 183 insertions, 104 deletions
diff --git a/tests/auto/quick/qquicklistview/BLACKLIST b/tests/auto/quick/qquicklistview/BLACKLIST index e4da77acba..0871e4e5c4 100644 --- a/tests/auto/quick/qquicklistview/BLACKLIST +++ b/tests/auto/quick/qquicklistview/BLACKLIST @@ -13,3 +13,7 @@ macos ci android [contentHeightWithDelayRemove] android + +# QTBUG-123894 +[multipleTransitions] +macos diff --git a/tests/auto/quick/qquicklistview/CMakeLists.txt b/tests/auto/quick/qquicklistview/CMakeLists.txt index 87171ec3ea..cee287ae41 100644 --- a/tests/auto/quick/qquicklistview/CMakeLists.txt +++ b/tests/auto/quick/qquicklistview/CMakeLists.txt @@ -7,6 +7,12 @@ ## tst_qquicklistview Test: ##################################################################### +if(NOT QT_BUILD_STANDALONE_TESTS AND NOT QT_BUILDING_QT) + cmake_minimum_required(VERSION 3.16) + project(tst_qquicklistview LANGUAGES CXX) + find_package(Qt6BuildInternals REQUIRED COMPONENTS STANDALONE_TEST) +endif() + # Collect test data file(GLOB_RECURSE test_data_glob RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} diff --git a/tests/auto/quick/qquicklistview/data/addoncompleted.qml b/tests/auto/quick/qquicklistview/data/addoncompleted.qml index 0ee94fa0b9..34ee459aa4 100644 --- a/tests/auto/quick/qquicklistview/data/addoncompleted.qml +++ b/tests/auto/quick/qquicklistview/data/addoncompleted.qml @@ -1,5 +1,5 @@ // Copyright (C) 2017 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only import QtQuick 2.9 diff --git a/tests/auto/quick/qquicklistview/data/attachedProperties.qml b/tests/auto/quick/qquicklistview/data/attachedProperties.qml index bfcd8fc5eb..72fdc009e0 100644 --- a/tests/auto/quick/qquicklistview/data/attachedProperties.qml +++ b/tests/auto/quick/qquicklistview/data/attachedProperties.qml @@ -1,5 +1,5 @@ // Copyright (C) 2017 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only import QtQuick 2.0 diff --git a/tests/auto/quick/qquicklistview/data/displayMargin.qml b/tests/auto/quick/qquicklistview/data/displayMargin.qml index 20ba124a97..64b668326f 100644 --- a/tests/auto/quick/qquicklistview/data/displayMargin.qml +++ b/tests/auto/quick/qquicklistview/data/displayMargin.qml @@ -1,5 +1,5 @@ // Copyright (C) 2016 Jolla 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 import QtQuick 2.3 diff --git a/tests/auto/quick/qquicklistview/data/flickBothDirections.qml b/tests/auto/quick/qquicklistview/data/flickBothDirections.qml index 6efd0d5a61..a9905adba5 100644 --- a/tests/auto/quick/qquicklistview/data/flickBothDirections.qml +++ b/tests/auto/quick/qquicklistview/data/flickBothDirections.qml @@ -1,5 +1,5 @@ // Copyright (C) 2017 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only import QtQuick 2.9 Rectangle { diff --git a/tests/auto/quick/qquicklistview/data/moveObjectModelItemToAnotherObjectModel.qml b/tests/auto/quick/qquicklistview/data/moveObjectModelItemToAnotherObjectModel.qml index 6d7b1c4e21..6f5160f13d 100644 --- a/tests/auto/quick/qquicklistview/data/moveObjectModelItemToAnotherObjectModel.qml +++ b/tests/auto/quick/qquicklistview/data/moveObjectModelItemToAnotherObjectModel.qml @@ -1,5 +1,5 @@ // Copyright (C) 2019 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only import QtQuick 2.14 import QtQml.Models 2.14 diff --git a/tests/auto/quick/qquicklistview/data/negativeDisplayMargin.qml b/tests/auto/quick/qquicklistview/data/negativeDisplayMargin.qml index 87ae08478b..d34069d721 100644 --- a/tests/auto/quick/qquicklistview/data/negativeDisplayMargin.qml +++ b/tests/auto/quick/qquicklistview/data/negativeDisplayMargin.qml @@ -1,5 +1,5 @@ // Copyright (C) 2016 Canonical Limited and/or its subsidiary(-ies). -// 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 import QtQuick 2.3 diff --git a/tests/auto/quick/qquicklistview/data/objectModelCulling.qml b/tests/auto/quick/qquicklistview/data/objectModelCulling.qml index c0a70ec485..9ca79ec8e4 100644 --- a/tests/auto/quick/qquicklistview/data/objectModelCulling.qml +++ b/tests/auto/quick/qquicklistview/data/objectModelCulling.qml @@ -3,6 +3,7 @@ import QtQuick 2.12 import QtQml.Models 2.12 Item { + anchors.fill: parent ObjectModel { id: model1 diff --git a/tests/auto/quick/qquicklistview/data/outsideViewportChangeNotAffectingView.qml b/tests/auto/quick/qquicklistview/data/outsideViewportChangeNotAffectingView.qml index 772b79b500..2215252aef 100644 --- a/tests/auto/quick/qquicklistview/data/outsideViewportChangeNotAffectingView.qml +++ b/tests/auto/quick/qquicklistview/data/outsideViewportChangeNotAffectingView.qml @@ -1,5 +1,5 @@ // Copyright (C) 2017 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only import QtQuick 2.1 import QtTest 1.1 diff --git a/tests/auto/quick/qquicklistview/data/proxytest.qml b/tests/auto/quick/qquicklistview/data/proxytest.qml index 2d733d81e4..dad5dbad8a 100644 --- a/tests/auto/quick/qquicklistview/data/proxytest.qml +++ b/tests/auto/quick/qquicklistview/data/proxytest.qml @@ -1,5 +1,5 @@ // Copyright (C) 2016 Canonical Limited and/or its subsidiary(-ies). -// 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 import QtQuick 2.1 import Proxy 1.0 diff --git a/tests/auto/quick/qquicklistview/data/qtbug34576.qml b/tests/auto/quick/qquicklistview/data/qtbug34576.qml index e1b96f5d5f..fdc94c0c0b 100644 --- a/tests/auto/quick/qquicklistview/data/qtbug34576.qml +++ b/tests/auto/quick/qquicklistview/data/qtbug34576.qml @@ -1,5 +1,5 @@ // Copyright (C) 2017 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 import QtQuick 2.7 diff --git a/tests/auto/quick/qquicklistview/data/qtbug61537_modelChangesAsync.qml b/tests/auto/quick/qquicklistview/data/qtbug61537_modelChangesAsync.qml index a526d8669a..c385a9b4b8 100644 --- a/tests/auto/quick/qquicklistview/data/qtbug61537_modelChangesAsync.qml +++ b/tests/auto/quick/qquicklistview/data/qtbug61537_modelChangesAsync.qml @@ -1,5 +1,5 @@ // Copyright (C) 2017 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only import QtQuick 2.0 Item { diff --git a/tests/auto/quick/qquicklistview/data/repositionListViewOnPopulateTransition.qml b/tests/auto/quick/qquicklistview/data/repositionListViewOnPopulateTransition.qml new file mode 100644 index 0000000000..7a313f7f87 --- /dev/null +++ b/tests/auto/quick/qquicklistview/data/repositionListViewOnPopulateTransition.qml @@ -0,0 +1,51 @@ +import QtQuick +import QtQuick.Controls.Basic + +ListView { + id: listView + + width: 100 + height: 100 + + verticalLayoutDirection: ListView.BottomToTop + interactive: true + reuseItems: false + + model: ListModel { + ListElement {index: 0; text: "Item0"} + } + + delegate: Button { + id: button + + required text + + property alias yScale: scaleTransform.yScale + property bool inverted: ListView.view.verticalLayoutDirection === ListView.BottomToTop + + transform: Scale { + id: scaleTransform + origin.y: button.inverted ? button.implicitHeight : 0 + } + } + + populate: Transition { + id: populateTransition + + NumberAnimation { + // in this case we do want to animate y to achieve a smooth + // transition from y=0 to its assigned y location + property: "y" + duration: 500 + easing.type: Easing.InOutQuad + } + NumberAnimation { + property: "yScale" + from: 0 + to: 1 + duration: 500 + easing.type: Easing.InOutQuad + } + } +} + diff --git a/tests/auto/quick/qquicklistview/data/resizeAfterComponentComplete.qml b/tests/auto/quick/qquicklistview/data/resizeAfterComponentComplete.qml index c169d92826..fdeca4454a 100644 --- a/tests/auto/quick/qquicklistview/data/resizeAfterComponentComplete.qml +++ b/tests/auto/quick/qquicklistview/data/resizeAfterComponentComplete.qml @@ -1,5 +1,5 @@ // Copyright (C) 2019 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only import QtQuick 2.12 diff --git a/tests/auto/quick/qquicklistview/data/reusedelegateitems.qml b/tests/auto/quick/qquicklistview/data/reusedelegateitems.qml index e5e64dcbc6..c54d10f88c 100644 --- a/tests/auto/quick/qquicklistview/data/reusedelegateitems.qml +++ b/tests/auto/quick/qquicklistview/data/reusedelegateitems.qml @@ -1,5 +1,5 @@ // Copyright (C) 2019 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only import QtQuick 2.15 Rectangle { diff --git a/tests/auto/quick/qquicklistview/data/roundingErrors.qml b/tests/auto/quick/qquicklistview/data/roundingErrors.qml index 2c1a1e665d..f850b3573a 100644 --- a/tests/auto/quick/qquicklistview/data/roundingErrors.qml +++ b/tests/auto/quick/qquicklistview/data/roundingErrors.qml @@ -1,5 +1,5 @@ // Copyright (C) 2017 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only import QtQuick 2.0 import QtQml.Models 2.1 diff --git a/tests/auto/quick/qquicklistview/data/setpositiononlayout.qml b/tests/auto/quick/qquicklistview/data/setpositiononlayout.qml index 4e43efa33b..a605b2103d 100644 --- a/tests/auto/quick/qquicklistview/data/setpositiononlayout.qml +++ b/tests/auto/quick/qquicklistview/data/setpositiononlayout.qml @@ -1,5 +1,5 @@ // Copyright (C) 2018 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only import QtQuick 2.0 diff --git a/tests/auto/quick/qquicklistview/data/sizeTransitions.qml b/tests/auto/quick/qquicklistview/data/sizeTransitions.qml index da0c8226fb..d1bddb2047 100644 --- a/tests/auto/quick/qquicklistview/data/sizeTransitions.qml +++ b/tests/auto/quick/qquicklistview/data/sizeTransitions.qml @@ -1,5 +1,5 @@ // Copyright (C) 2017 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only import QtQuick 2.2 import QtQuick.Window 2.1 diff --git a/tests/auto/quick/qquicklistview/data/snapOneItemResize.qml b/tests/auto/quick/qquicklistview/data/snapOneItemResize.qml index 7ecc833a64..4603cd9f34 100644 --- a/tests/auto/quick/qquicklistview/data/snapOneItemResize.qml +++ b/tests/auto/quick/qquicklistview/data/snapOneItemResize.qml @@ -2,6 +2,7 @@ import QtQuick 2.0 ListView { id: list + anchors.fill: parent currentIndex: 5 snapMode: ListView.SnapOneItem orientation: ListView.Horizontal diff --git a/tests/auto/quick/qquicklistview/data/stickyPositioning-both.qml b/tests/auto/quick/qquicklistview/data/stickyPositioning-both.qml index c28070f183..ece0e2527b 100644 --- a/tests/auto/quick/qquicklistview/data/stickyPositioning-both.qml +++ b/tests/auto/quick/qquicklistview/data/stickyPositioning-both.qml @@ -1,5 +1,5 @@ // Copyright (C) 2017 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only import QtQuick 2.4 Rectangle { diff --git a/tests/auto/quick/qquicklistview/data/stickyPositioning-footer.qml b/tests/auto/quick/qquicklistview/data/stickyPositioning-footer.qml index 1b398138c8..568762b445 100644 --- a/tests/auto/quick/qquicklistview/data/stickyPositioning-footer.qml +++ b/tests/auto/quick/qquicklistview/data/stickyPositioning-footer.qml @@ -1,5 +1,5 @@ // Copyright (C) 2017 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only import QtQuick 2.4 Rectangle { diff --git a/tests/auto/quick/qquicklistview/data/stickyPositioning-header.qml b/tests/auto/quick/qquicklistview/data/stickyPositioning-header.qml index c0f2a5b2fb..6b5889a808 100644 --- a/tests/auto/quick/qquicklistview/data/stickyPositioning-header.qml +++ b/tests/auto/quick/qquicklistview/data/stickyPositioning-header.qml @@ -1,5 +1,5 @@ // Copyright (C) 2017 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only import QtQuick 2.4 Rectangle { diff --git a/tests/auto/quick/qquicklistview/data/usechooserwithoutdefault.qml b/tests/auto/quick/qquicklistview/data/usechooserwithoutdefault.qml index 7c555ea264..cba0ad5720 100644 --- a/tests/auto/quick/qquicklistview/data/usechooserwithoutdefault.qml +++ b/tests/auto/quick/qquicklistview/data/usechooserwithoutdefault.qml @@ -1,5 +1,5 @@ // Copyright (C) 2018 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only import QtQuick 2.12 import QtQuick.Window 2.3 diff --git a/tests/auto/quick/qquicklistview/incrementalmodel.cpp b/tests/auto/quick/qquicklistview/incrementalmodel.cpp index 1670fcd1cf..f2c6219711 100644 --- a/tests/auto/quick/qquicklistview/incrementalmodel.cpp +++ b/tests/auto/quick/qquicklistview/incrementalmodel.cpp @@ -1,5 +1,5 @@ // Copyright (C) 2016 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 "incrementalmodel.h" #include <QGuiApplication> diff --git a/tests/auto/quick/qquicklistview/incrementalmodel.h b/tests/auto/quick/qquicklistview/incrementalmodel.h index 1cbd483551..f61d38a3d1 100644 --- a/tests/auto/quick/qquicklistview/incrementalmodel.h +++ b/tests/auto/quick/qquicklistview/incrementalmodel.h @@ -1,5 +1,5 @@ // Copyright (C) 2016 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 #ifndef IncrementalModel_H #define IncrementalModel_H diff --git a/tests/auto/quick/qquicklistview/proxytestinnermodel.cpp b/tests/auto/quick/qquicklistview/proxytestinnermodel.cpp index d00b417429..e142a8a58b 100644 --- a/tests/auto/quick/qquicklistview/proxytestinnermodel.cpp +++ b/tests/auto/quick/qquicklistview/proxytestinnermodel.cpp @@ -1,5 +1,5 @@ // Copyright (C) 2016 Canonical Limited and/or its subsidiary(-ies). -// 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 "proxytestinnermodel.h" diff --git a/tests/auto/quick/qquicklistview/proxytestinnermodel.h b/tests/auto/quick/qquicklistview/proxytestinnermodel.h index 3177ec51b3..5ea78ae864 100644 --- a/tests/auto/quick/qquicklistview/proxytestinnermodel.h +++ b/tests/auto/quick/qquicklistview/proxytestinnermodel.h @@ -1,5 +1,5 @@ // Copyright (C) 2016 Canonical Limited and/or its subsidiary(-ies). -// 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 #ifndef INNERMODEL_H #define INNERMODEL_H diff --git a/tests/auto/quick/qquicklistview/randomsortmodel.cpp b/tests/auto/quick/qquicklistview/randomsortmodel.cpp index 3e0c45bb1a..0e5f562e4b 100644 --- a/tests/auto/quick/qquicklistview/randomsortmodel.cpp +++ b/tests/auto/quick/qquicklistview/randomsortmodel.cpp @@ -1,5 +1,5 @@ // Copyright (C) 2016 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 "randomsortmodel.h" #include <QRandomGenerator> diff --git a/tests/auto/quick/qquicklistview/randomsortmodel.h b/tests/auto/quick/qquicklistview/randomsortmodel.h index 9fae9b2b76..9d53a8cff3 100644 --- a/tests/auto/quick/qquicklistview/randomsortmodel.h +++ b/tests/auto/quick/qquicklistview/randomsortmodel.h @@ -1,5 +1,5 @@ // Copyright (C) 2016 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 #ifndef RANDOMSORTMODEL_H #define RANDOMSORTMODEL_H diff --git a/tests/auto/quick/qquicklistview/reusemodel.h b/tests/auto/quick/qquicklistview/reusemodel.h index 4f0ab817b2..0a23a2bda4 100644 --- a/tests/auto/quick/qquicklistview/reusemodel.h +++ b/tests/auto/quick/qquicklistview/reusemodel.h @@ -1,5 +1,5 @@ // Copyright (C) 2019 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 #ifndef REUSEMODEL_H #define REUSEMODEL_H diff --git a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp index 8a3a23826d..3def877f00 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()))); } @@ -7963,7 +7979,7 @@ void tst_QQuickListView::flickBeyondBounds() // Flick view up beyond bounds flick(window.data(), QPoint(10, 10), QPoint(10, -2000), 180); -#ifdef Q_OS_MAC +#ifdef Q_OS_MACOS QSKIP("Disabled due to flaky behavior on CI system (QTBUG-44493)"); QTRY_COMPARE(findItems<QQuickItem>(contentItem, "wrapper").count(), 0); #endif @@ -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()); } |