From ddfa5e774febee165059079a5e9f9e54a122a190 Mon Sep 17 00:00:00 2001 From: Mitch Curtis Date: Thu, 3 Sep 2015 13:16:02 +0200 Subject: 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 --- src/extras/qquickswipeview.cpp | 2 +- tests/auto/extras/data/tst_swipeview.qml | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) 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) -- cgit v1.2.3