aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMitch Curtis <mitch.curtis@theqtcompany.com>2015-09-03 13:16:02 +0200
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2015-09-05 17:42:05 +0000
commitddfa5e774febee165059079a5e9f9e54a122a190 (patch)
tree6d487f2025a469f08d5593ad81c684d9774d4141
parent0addfd5d586c7850c1e470f24c6364e6305dfa08 (diff)
SwipeView: don't override initial currentIndex.
When insertItem() was called for the first time as a result of "statically" declared SwipeView children, the currentIndex would be changed to 0. We should only do this if the currentIndex is invalid (-1), otherwise we disrespect the user's settings. Change-Id: I692b60581e706edcfa4939bbe59a815ff3e019e5 Task-number: QTBUG-48086 Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
-rw-r--r--src/extras/qquickswipeview.cpp2
-rw-r--r--tests/auto/extras/data/tst_swipeview.qml27
2 files changed, 28 insertions, 1 deletions
diff --git a/src/extras/qquickswipeview.cpp b/src/extras/qquickswipeview.cpp
index 0f50fd53..ae23843c 100644
--- a/src/extras/qquickswipeview.cpp
+++ b/src/extras/qquickswipeview.cpp
@@ -96,7 +96,7 @@ void QQuickSwipeViewPrivate::insertItem(int index, QQuickItem *item)
QQuickContainerPrivate::insertItem(index, item);
- if (contentModel->count() == 1)
+ if (contentModel->count() == 1 && currentIndex == -1)
q->setCurrentIndex(index);
}
diff --git a/tests/auto/extras/data/tst_swipeview.qml b/tests/auto/extras/data/tst_swipeview.qml
index 6ec71acc..dbd1c10b 100644
--- a/tests/auto/extras/data/tst_swipeview.qml
+++ b/tests/auto/extras/data/tst_swipeview.qml
@@ -93,6 +93,33 @@ TestCase {
control.destroy()
}
+ Component {
+ id: initialCurrentSwipeView
+ SwipeView {
+ currentIndex: 1
+
+ property alias item0: item0
+ property alias item1: item1
+
+ Item {
+ id: item0
+ }
+ Item {
+ id: item1
+ }
+ }
+ }
+
+ function test_initialCurrent() {
+ var control = initialCurrentSwipeView.createObject(testCase)
+
+ compare(control.count, 2)
+ compare(control.currentIndex, 1)
+ compare(control.currentItem, control.item1)
+
+ control.destroy()
+ }
+
function test_addRemove() {
var control = swipeView.createObject(testCase)