aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoni Poikelin <joni.poikelin@qt.io>2021-04-16 15:24:29 +0300
committerJoni Poikelin <joni.poikelin@qt.io>2021-10-06 13:25:37 +0300
commit4cf8b6732a627cc73d22c95bd080dba447afb2e3 (patch)
tree72bd0cf0394740d5a35eaacbd7ba21e719babd8b
parentdbb123217e26e1e099371cd7e28fb4999059f31b (diff)
Fix ListView.isCurrentItem when used with DelegateModel
Fixes: QTBUG-86744 Change-Id: I7287b39afc8f84e336aa46739b534e33e4212ea7 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit d9f9d773e92940786f159897623618f3bf6bcf0f)
-rw-r--r--src/quick/items/qquickitemview.cpp2
-rw-r--r--tests/auto/quick/qquicklistview/data/qtbug86744.qml21
-rw-r--r--tests/auto/quick/qquicklistview/tst_qquicklistview.cpp15
3 files changed, 38 insertions, 0 deletions
diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp
index 3999109e47..80abd581d1 100644
--- a/src/quick/items/qquickitemview.cpp
+++ b/src/quick/items/qquickitemview.cpp
@@ -2402,6 +2402,8 @@ void QQuickItemView::createdItem(int index, QObject* object)
d->repositionPackageItemAt(item, index);
else if (index == d->currentIndex)
d->updateCurrent(index);
+ } else if (index == d->currentIndex) {
+ d->updateCurrent(index);
}
}
diff --git a/tests/auto/quick/qquicklistview/data/qtbug86744.qml b/tests/auto/quick/qquicklistview/data/qtbug86744.qml
new file mode 100644
index 0000000000..6dc82d57eb
--- /dev/null
+++ b/tests/auto/quick/qquicklistview/data/qtbug86744.qml
@@ -0,0 +1,21 @@
+import QtQuick 2.15
+import QtQml.Models 2.15
+
+Item {
+ height: 200
+ width: 100
+ DelegateModel {
+ id: dm
+ model: 2
+ delegate: Item {
+ width: 100; height: 20
+ property bool isCurrent: ListView.isCurrentItem
+ }
+ }
+ ListView {
+ objectName: "listView"
+ model: dm
+ currentIndex: 1
+ anchors.fill: parent
+ }
+}
diff --git a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp
index d3deb513d0..df329f8318 100644
--- a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp
+++ b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp
@@ -301,6 +301,7 @@ private slots:
void animatedDelegate();
void dragDelegateWithMouseArea();
void dragDelegateWithMouseArea_data();
+ void isCurrentItem_DelegateModel();
private:
template <class T> void items(const QUrl &source);
@@ -10200,6 +10201,20 @@ void tst_QQuickListView::dragDelegateWithMouseArea_data()
}
}
+void tst_QQuickListView::isCurrentItem_DelegateModel()
+{
+ QScopedPointer<QQuickView> window(createView());
+ window->setSource(testFileUrl("qtbug86744.qml"));
+ window->resize(640, 480);
+ window->show();
+ QVERIFY(QTest::qWaitForWindowExposed(window.data()));
+
+ QQuickListView* listView = window->rootObject()->findChild<QQuickListView*>("listView");
+ QVERIFY(listView);
+ QVariant value = listView->itemAtIndex(1)->property("isCurrent");
+ QVERIFY(value.toBool() == true);
+}
+
QTEST_MAIN(tst_QQuickListView)
#include "tst_qquicklistview.moc"