aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quicktemplates2/qquickswipeview.cpp5
-rw-r--r--tests/auto/quickcontrols2/controls/data/tst_swipeview.qml30
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)
+ }
+ }
}