diff options
-rw-r--r-- | src/imports/controls/ScrollBar.qml | 4 | ||||
-rw-r--r-- | src/imports/controls/material/ScrollBar.qml | 4 | ||||
-rw-r--r-- | src/imports/controls/universal/ScrollBar.qml | 4 | ||||
-rw-r--r-- | src/templates/qquickscrollbar.cpp | 4 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_scrollbar.qml | 18 |
5 files changed, 25 insertions, 9 deletions
diff --git a/src/imports/controls/ScrollBar.qml b/src/imports/controls/ScrollBar.qml index 55d53191..b9ebd634 100644 --- a/src/imports/controls/ScrollBar.qml +++ b/src/imports/controls/ScrollBar.qml @@ -60,8 +60,8 @@ T.ScrollBar { opacity: 0.0 readonly property bool horizontal: control.orientation === Qt.Horizontal - x: control.leftPadding + (horizontal ? control.position * control.width : 0) - y: control.topPadding + (horizontal ? 0 : control.position * control.height) + x: control.leftPadding + (horizontal ? control.position * control.availableWidth : 0) + y: control.topPadding + (horizontal ? 0 : control.position * control.availableHeight) width: horizontal ? control.size * control.availableWidth : implicitWidth height: horizontal ? implicitHeight : control.size * control.availableHeight diff --git a/src/imports/controls/material/ScrollBar.qml b/src/imports/controls/material/ScrollBar.qml index 539b9243..72130c63 100644 --- a/src/imports/controls/material/ScrollBar.qml +++ b/src/imports/controls/material/ScrollBar.qml @@ -60,8 +60,8 @@ T.ScrollBar { opacity: 0.0 readonly property bool horizontal: control.orientation === Qt.Horizontal - x: control.leftPadding + (horizontal ? control.position * control.width : 0) - y: control.topPadding + (horizontal ? 0 : control.position * control.height) + x: control.leftPadding + (horizontal ? control.position * control.availableWidth : 0) + y: control.topPadding + (horizontal ? 0 : control.position * control.availableHeight) width: horizontal ? control.size * control.availableWidth : implicitWidth height: horizontal ? implicitHeight : control.size * control.availableHeight diff --git a/src/imports/controls/universal/ScrollBar.qml b/src/imports/controls/universal/ScrollBar.qml index b1bc8f6a..dd0a81ca 100644 --- a/src/imports/controls/universal/ScrollBar.qml +++ b/src/imports/controls/universal/ScrollBar.qml @@ -58,8 +58,8 @@ T.ScrollBar { opacity: 0.0 readonly property bool horizontal: control.orientation === Qt.Horizontal - x: control.leftPadding + (horizontal ? control.position * control.width : 0) - y: control.topPadding + (horizontal ? 0 : control.position * control.height) + x: control.leftPadding + (horizontal ? control.position * control.availableWidth : 0) + y: control.topPadding + (horizontal ? 0 : control.position * control.availableHeight) width: horizontal ? control.size * control.availableWidth : implicitWidth height: horizontal ? implicitHeight : control.size * control.availableHeight } diff --git a/src/templates/qquickscrollbar.cpp b/src/templates/qquickscrollbar.cpp index 86d4e290..b3679bf8 100644 --- a/src/templates/qquickscrollbar.cpp +++ b/src/templates/qquickscrollbar.cpp @@ -285,9 +285,9 @@ qreal QQuickScrollBar::positionAt(const QPoint &point) const { Q_D(const QQuickScrollBar); if (d->orientation == Qt::Horizontal) - return point.x() / width(); + return (point.x() - leftPadding()) / availableWidth(); else - return point.y() / height(); + return (point.y() - topPadding()) / availableHeight(); } #ifndef QT_NO_ACCESSIBILITY diff --git a/tests/auto/controls/data/tst_scrollbar.qml b/tests/auto/controls/data/tst_scrollbar.qml index 55f31e12..6e021ccf 100644 --- a/tests/auto/controls/data/tst_scrollbar.qml +++ b/tests/auto/controls/data/tst_scrollbar.qml @@ -57,7 +57,7 @@ TestCase { Component { id: scrollBar - ScrollBar { } + ScrollBar { padding: 0 } } Component { @@ -210,4 +210,20 @@ TestCase { control.destroy() } + + function test_padding_data() { + return [ + { tag: "horizontal", properties: { visible: true, orientation: Qt.Horizontal, width: testCase.width, leftPadding: testCase.width * 0.1 } }, + { tag: "vertical", properties: { visible: true, orientation: Qt.Vertical, height: testCase.height, topPadding: testCase.height * 0.1 } } + ] + } + + function test_padding(data) { + var control = scrollBar.createObject(testCase, data.properties) + + mousePress(control, control.leftPadding + control.availableWidth * 0.5, control.topPadding + control.availableHeight * 0.5, Qt.LeftButton) + mouseRelease(control, control.leftPadding + control.availableWidth * 0.5, control.topPadding + control.availableHeight * 0.5, Qt.LeftButton) + + compare(control.position, 0.5) + } } |