From a84444f3809e9372c61ace8f5b973ad59fcaa9af Mon Sep 17 00:00:00 2001 From: J-P Nurmi <jpnurmi@digia.com> Date: Mon, 27 May 2013 15:07:33 +0200 Subject: [PATCH] ScrollView: take Flickable::originX and originY into account Change-Id: I16eb186a2b1f706bbc961d34a614bf2f9a9a0646 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com> --- src/controls/ScrollView.qml | 8 ++++++-- src/private/ScrollViewHelper.qml | 12 ++++++++---- tests/manual/scrollview/main.qml | 20 +++++++++++++++++++- 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/src/controls/ScrollView.qml b/src/controls/ScrollView.qml index 31f69b8f1..3262648eb 100644 --- a/src/controls/ScrollView.qml +++ b/src/controls/ScrollView.qml @@ -236,11 +236,15 @@ FocusScope { property bool horizontalRecursionGuard: false property bool verticalRecursionGuard: false - horizontalMaximumValue: flickableItem ? flickableItem.contentWidth - viewport.width : 0 - verticalMaximumValue: flickableItem ? flickableItem.contentHeight - viewport.height + __viewTopMargin : 0 + horizontalMinimumValue: flickableItem ? flickableItem.originX : 0 + horizontalMaximumValue: flickableItem ? flickableItem.originX + flickableItem.contentWidth - viewport.width : 0 + + verticalMinimumValue: flickableItem ? flickableItem.originY : 0 + verticalMaximumValue: flickableItem ? flickableItem.originY + flickableItem.contentHeight - viewport.height + __viewTopMargin : 0 Connections { target: flickableItem + onContentYChanged: { wheelArea.verticalRecursionGuard = true wheelArea.verticalValue = flickableItem.contentY diff --git a/src/private/ScrollViewHelper.qml b/src/private/ScrollViewHelper.qml index cf5c514f4..9e8e78d61 100644 --- a/src/private/ScrollViewHelper.qml +++ b/src/private/ScrollViewHelper.qml @@ -57,6 +57,8 @@ Item { property int availableWidth property int contentHeight property int contentWidth + property real originX + property real originY property int leftMargin: outerFrame ? root.__style.padding.left : 0 property int rightMargin: outerFrame ? root.__style.padding.right : 0 @@ -74,6 +76,8 @@ Item { wheelarea.availableHeight = viewport.height wheelarea.contentWidth = flickableItem !== null ? flickableItem.contentWidth : 0 wheelarea.contentHeight = flickableItem !== null ? flickableItem.contentHeight : 0 + wheelarea.originX = flickableItem !== null ? flickableItem.originX : 0 + wheelarea.originY = flickableItem !== null ? flickableItem.originY : 0 recursionGuard = false } } @@ -123,8 +127,8 @@ Item { visible: contentWidth > availableWidth height: visible ? implicitHeight : 0 z: 1 - maximumValue: contentWidth > availableWidth ? contentWidth - availableWidth : 0 - minimumValue: 0 + maximumValue: contentWidth > availableWidth ? originX + contentWidth - availableWidth : 0 + minimumValue: originX anchors.bottom: parent.bottom anchors.left: parent.left anchors.right: cornerFill.left @@ -158,8 +162,8 @@ Item { width: visible ? implicitWidth : 0 z: 1 anchors.bottom: cornerFill.top - maximumValue: contentHeight > availableHeight ? contentHeight - availableHeight + __viewTopMargin : 0 - minimumValue: 0 + maximumValue: contentHeight > availableHeight ? originY + contentHeight - availableHeight + __viewTopMargin : 0 + minimumValue: originY anchors.right: parent.right anchors.top: parent.top anchors.topMargin: __scrollBarTopMargin + topMargin diff --git a/tests/manual/scrollview/main.qml b/tests/manual/scrollview/main.qml index 71accd8ec..a245ca88c 100644 --- a/tests/manual/scrollview/main.qml +++ b/tests/manual/scrollview/main.qml @@ -78,6 +78,12 @@ ApplicationWindow { value: 1000 implicitWidth: 80 } + CheckBox { + id: largeCheck + text: "Large" + checked: false + implicitWidth: 80 + } Item { Layout.fillWidth: true } } } @@ -139,6 +145,7 @@ ApplicationWindow { frameVisible: frameCheck.checked text: loremIpsum + loremIpsum + loremIpsum + loremIpsum anchors.fill: parent + font.pixelSize: largeCheck.checked ? 26 : 13 } } Tab { @@ -152,7 +159,7 @@ ApplicationWindow { model: 30 delegate: Rectangle { width: parent.width - height: 30 + height: largeCheck.checked ? 60 : 30 Text { anchors.fill: parent anchors.margins: 4 @@ -177,6 +184,17 @@ ApplicationWindow { model: 10 frameVisible: frameCheck.checked + rowDelegate: Rectangle { + width: parent.width + height: largeCheck.checked ? 60 : 30 + Rectangle { + anchors.bottom: parent.bottom + width: parent.width + height: 1 + color: "darkgray" + } + } + TableViewColumn {title: "first" width: view.viewport.width } -- GitLab