aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/imports/controls/ScrollBar.qml4
-rw-r--r--src/imports/controls/material/ScrollBar.qml4
-rw-r--r--src/imports/controls/universal/ScrollBar.qml4
-rw-r--r--src/templates/qquickscrollbar.cpp4
-rw-r--r--tests/auto/controls/data/tst_scrollbar.qml18
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)
+ }
}