diff options
author | Joni Poikelin <joni.poikelin@qt.io> | 2021-04-16 15:24:29 +0300 |
---|---|---|
committer | Joni Poikelin <joni.poikelin@qt.io> | 2021-10-06 13:25:37 +0300 |
commit | 4cf8b6732a627cc73d22c95bd080dba447afb2e3 (patch) | |
tree | 72bd0cf0394740d5a35eaacbd7ba21e719babd8b | |
parent | dbb123217e26e1e099371cd7e28fb4999059f31b (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.cpp | 2 | ||||
-rw-r--r-- | tests/auto/quick/qquicklistview/data/qtbug86744.qml | 21 | ||||
-rw-r--r-- | tests/auto/quick/qquicklistview/tst_qquicklistview.cpp | 15 |
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" |