aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquicklistview
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/quick/qquicklistview')
-rw-r--r--tests/auto/quick/qquicklistview/BLACKLIST4
-rw-r--r--tests/auto/quick/qquicklistview/CMakeLists.txt6
-rw-r--r--tests/auto/quick/qquicklistview/data/addoncompleted.qml2
-rw-r--r--tests/auto/quick/qquicklistview/data/attachedProperties.qml2
-rw-r--r--tests/auto/quick/qquicklistview/data/displayMargin.qml2
-rw-r--r--tests/auto/quick/qquicklistview/data/flickBothDirections.qml2
-rw-r--r--tests/auto/quick/qquicklistview/data/moveObjectModelItemToAnotherObjectModel.qml2
-rw-r--r--tests/auto/quick/qquicklistview/data/negativeDisplayMargin.qml2
-rw-r--r--tests/auto/quick/qquicklistview/data/objectModelCulling.qml1
-rw-r--r--tests/auto/quick/qquicklistview/data/outsideViewportChangeNotAffectingView.qml2
-rw-r--r--tests/auto/quick/qquicklistview/data/proxytest.qml2
-rw-r--r--tests/auto/quick/qquicklistview/data/qtbug34576.qml2
-rw-r--r--tests/auto/quick/qquicklistview/data/qtbug61537_modelChangesAsync.qml2
-rw-r--r--tests/auto/quick/qquicklistview/data/repositionListViewOnPopulateTransition.qml51
-rw-r--r--tests/auto/quick/qquicklistview/data/resizeAfterComponentComplete.qml2
-rw-r--r--tests/auto/quick/qquicklistview/data/reusedelegateitems.qml2
-rw-r--r--tests/auto/quick/qquicklistview/data/roundingErrors.qml2
-rw-r--r--tests/auto/quick/qquicklistview/data/setpositiononlayout.qml2
-rw-r--r--tests/auto/quick/qquicklistview/data/sizeTransitions.qml2
-rw-r--r--tests/auto/quick/qquicklistview/data/snapOneItemResize.qml1
-rw-r--r--tests/auto/quick/qquicklistview/data/stickyPositioning-both.qml2
-rw-r--r--tests/auto/quick/qquicklistview/data/stickyPositioning-footer.qml2
-rw-r--r--tests/auto/quick/qquicklistview/data/stickyPositioning-header.qml2
-rw-r--r--tests/auto/quick/qquicklistview/data/usechooserwithoutdefault.qml2
-rw-r--r--tests/auto/quick/qquicklistview/incrementalmodel.cpp2
-rw-r--r--tests/auto/quick/qquicklistview/incrementalmodel.h2
-rw-r--r--tests/auto/quick/qquicklistview/proxytestinnermodel.cpp2
-rw-r--r--tests/auto/quick/qquicklistview/proxytestinnermodel.h2
-rw-r--r--tests/auto/quick/qquicklistview/randomsortmodel.cpp2
-rw-r--r--tests/auto/quick/qquicklistview/randomsortmodel.h2
-rw-r--r--tests/auto/quick/qquicklistview/reusemodel.h2
-rw-r--r--tests/auto/quick/qquicklistview/tst_qquicklistview.cpp172
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());
}