Fix currentIndex in Qml itemView when assigning an empty model
authorNils Jeisecke <jeisecke@saltation.de>
Tue, 6 Aug 2013 11:58:15 +0000 (13:58 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Fri, 16 Aug 2013 16:11:23 +0000 (18:11 +0200)
When assigning an empty model to e.g. a ListView after component
initialization has been completed, currentIndex is now correctly
set to -1.

Change-Id: I540c034944009ccb8894bf84f400658ef9f0371f
Task-number: QTBUG-32838
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
dist/changes-5.1.2 [new file with mode: 0644]
src/quick/items/qquickitemview.cpp
tests/auto/quick/qquicklistview/tst_qquicklistview.cpp

diff --git a/dist/changes-5.1.2 b/dist/changes-5.1.2
new file mode 100644 (file)
index 0000000..2ea62a4
--- /dev/null
@@ -0,0 +1,25 @@
+Qt 5.1.2 is a bug-fix release. It maintains both forward and backward
+compatibility (source and binary) with Qt 5.1.0 and 5.1.1.
+
+For more details, refer to the online documentation included in this
+distribution. The documentation is also available online:
+
+  http://qt-project.org/doc/qt-5.1/
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Qt Bug Tracker:
+
+  http://bugreports.qt-project.org/
+
+Each of these identifiers can be entered in the bug tracker to obtain more
+information about a particular change.
+
+****************************************************************************
+*                   Important Behavior Changes                             *
+****************************************************************************
+
+ - QTBUG-32838: Setting the model property of ListView, GridView or PathView to
+   an empty model will now correctly reset currentIndex to -1. In prior versions
+   currentIndex was set to 0 regardless of the actual number of rows in the model
+   when the model property was changed after the view's initialization.
+
index f8f622a..e19e780 100644 (file)
@@ -326,7 +326,7 @@ void QQuickItemView::setModel(const QVariant &model)
             d->updateSectionCriteria();
             d->refill();
             d->currentIndex = -1;
-            setCurrentIndex(0);
+            setCurrentIndex(d->model->count() > 0 ? 0 : -1);
             d->updateViewport();
 
             if (d->transitioner && d->transitioner->populateTransition) {
index 2268f07..cd8cc53 100644 (file)
@@ -2605,6 +2605,11 @@ void tst_QQuickListView::currentIndex()
     listview->setContentY(200);
     QTRY_VERIFY(!delegateVisible(listview->currentItem()));
 
+    // empty model should reset currentIndex to -1
+    QaimModel emptyModel;
+    ctxt->setContextProperty("testModel", &emptyModel);
+    QCOMPARE(listview->currentIndex(), -1);
+
     delete window;
 }