diff options
-rw-r--r-- | src/quicktemplates2/qquickswipeview.cpp | 5 | ||||
-rw-r--r-- | tests/auto/quickcontrols2/controls/data/tst_swipeview.qml | 30 |
2 files changed, 32 insertions, 3 deletions
diff --git a/src/quicktemplates2/qquickswipeview.cpp b/src/quicktemplates2/qquickswipeview.cpp index e41b328477..18d04d5724 100644 --- a/src/quicktemplates2/qquickswipeview.cpp +++ b/src/quicktemplates2/qquickswipeview.cpp @@ -158,11 +158,10 @@ void QQuickSwipeViewPrivate::resizeItems() qmlWarning(item) << "SwipeView has detected conflicting anchors. Unable to layout the item."; item->setProperty("_q_QQuickSwipeView_warned", true); } - if (orientation == Qt::Horizontal) - item->setY(0); + item->setPosition({i * (contentItem->width() + spacing), 0}); else - item->setX(0); + item->setPosition({0, i * (contentItem->height() + spacing)}); item->setSize(QSizeF(contentItem->width(), contentItem->height())); } } diff --git a/tests/auto/quickcontrols2/controls/data/tst_swipeview.qml b/tests/auto/quickcontrols2/controls/data/tst_swipeview.qml index c9629de906..254c876f08 100644 --- a/tests/auto/quickcontrols2/controls/data/tst_swipeview.qml +++ b/tests/auto/quickcontrols2/controls/data/tst_swipeview.qml @@ -686,4 +686,34 @@ TestCase { var image = grabImage(control) compare(image.pixel(3, 3), "#ffff00") } + + Component { + id: translucentPages + SwipeView { + spacing: 10 + padding: 10 + Text { text: "page 0" } + Text { text: "page 1"; font.pointSize: 16 } + Text { text: "page 2"; font.pointSize: 24 } + Text { text: "page 3"; font.pointSize: 32 } + } + } + + function test_initialPositions() { // QTBUG-102487 + const control = createTemporaryObject(translucentPages, testCase, {width: 320, height: 200}) + verify(control) + compare(control.orientation, Qt.Horizontal) + for (var i = 0; i < control.count; ++i) { + const page = control.itemAt(i) + // control.contentItem.width + control.spacing == 310; except Imagine style has contentItem.width == 320 + compare(page.x, i * 310) + compare(page.y, 0) + } + control.orientation = Qt.Vertical + for (var i = 0; i < control.count; ++i) { + const page = control.itemAt(i) + compare(page.y, i * (control.contentItem.height + control.spacing)) + compare(page.x, 0) + } + } } |