QQuickItemView: Emit correct change signal on model reset
As the variable was manually set to -1 beforehand, we would never emit the change signal, leaving bindings stale. However, simply removing the assignment would lead to not triggering the signal when currentIndex was 0. So now we set it to -2, which cannot happen in any other place. Note that QTBUG-64998 was already mostly fixed due to earlier changes fixing the currentItem part, only currentIndex was still broken Fixes: QTBUG-68232 Fixes: QTBUG-64998 Fixes: QTBUG-63422 Change-Id: I885e06f1e258e67c3368d017bf79bff760440863 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
This commit is contained in:
parent
cc66dd33cc
commit
db321e7441
|
@ -235,7 +235,9 @@ void QQuickItemView::setModel(const QVariant &m)
|
|||
if (isComponentComplete()) {
|
||||
d->updateSectionCriteria();
|
||||
d->refill();
|
||||
d->currentIndex = -1;
|
||||
/* Setting currentIndex to -2 ensures that we always enter the "currentIndex changed"
|
||||
code path in setCurrentIndex, updating bindings depending on currentIndex.*/
|
||||
d->currentIndex = -2;
|
||||
setCurrentIndex(d->model->count() > 0 ? 0 : -1);
|
||||
d->updateViewport();
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ Rectangle {
|
|||
property bool showHeader: false
|
||||
property bool showFooter: false
|
||||
property int currentItemChangedCount: 0
|
||||
property string s: ""+list.currentIndex
|
||||
|
||||
width: 240
|
||||
height: 320
|
||||
|
|
|
@ -2891,7 +2891,11 @@ void tst_QQuickListView::currentIndex()
|
|||
|
||||
// empty model should reset currentIndex to -1
|
||||
QaimModel emptyModel;
|
||||
window->rootObject()->setProperty("currentItemChangedCount", QVariant(0));
|
||||
QVERIFY(QQmlProperty(window->rootObject(), "s").read().toString() != QLatin1String("-1"));
|
||||
ctxt->setContextProperty("testModel", &emptyModel);
|
||||
QCOMPARE(QQmlProperty(window->rootObject(), "s").read().toString(), "-1");
|
||||
QCOMPARE(window->rootObject()->property("currentItemChangedCount").toInt(), 1);
|
||||
QCOMPARE(listview->currentIndex(), -1);
|
||||
|
||||
delete window;
|
||||
|
|
Loading…
Reference in New Issue