summaryrefslogtreecommitdiffstats
path: root/src/controls/ScrollView.qml
diff options
context:
space:
mode:
Diffstat (limited to 'src/controls/ScrollView.qml')
-rw-r--r--src/controls/ScrollView.qml27
1 files changed, 14 insertions, 13 deletions
diff --git a/src/controls/ScrollView.qml b/src/controls/ScrollView.qml
index 74d5ee7dd..e6001b041 100644
--- a/src/controls/ScrollView.qml
+++ b/src/controls/ScrollView.qml
@@ -238,13 +238,13 @@ FocusScope {
onContentYChanged: {
scroller.blockUpdates = true
- scroller.verticalScrollBar.value = flickableItem.contentY
+ scroller.verticalScrollBar.value = flickableItem.contentY - flickableItem.originY
scroller.blockUpdates = false
}
onContentXChanged: {
scroller.blockUpdates = true
- scroller.horizontalScrollBar.value = flickableItem.contentX
+ scroller.horizontalScrollBar.value = flickableItem.contentX - flickableItem.originX
scroller.blockUpdates = false
}
@@ -274,11 +274,11 @@ FocusScope {
property bool horizontalRecursionGuard: false
property bool verticalRecursionGuard: false
- horizontalMinimumValue: flickableItem ? flickableItem.originX : 0
- horizontalMaximumValue: flickableItem ? flickableItem.originX + flickableItem.contentWidth - viewport.width : 0
+ horizontalMinimumValue: 0
+ horizontalMaximumValue: flickableItem ? flickableItem.contentWidth - viewport.width : 0
- verticalMinimumValue: flickableItem ? flickableItem.originY : 0
- verticalMaximumValue: flickableItem ? flickableItem.originY + flickableItem.contentHeight - viewport.height + __viewTopMargin : 0
+ verticalMinimumValue: 0
+ verticalMaximumValue: flickableItem ? flickableItem.contentHeight - viewport.height + __viewTopMargin : 0
// The default scroll speed for typical angle-based mouse wheels. The value
// comes originally from QTextEdit, which sets 20px steps by default, as well as
@@ -291,32 +291,33 @@ FocusScope {
onContentYChanged: {
wheelArea.verticalRecursionGuard = true
- wheelArea.verticalValue = flickableItem.contentY
+ wheelArea.verticalValue = flickableItem.contentY - flickableItem.originY
wheelArea.verticalRecursionGuard = false
}
onContentXChanged: {
wheelArea.horizontalRecursionGuard = true
- wheelArea.horizontalValue = flickableItem.contentX
+ wheelArea.horizontalValue = flickableItem.contentX - flickableItem.originX
wheelArea.horizontalRecursionGuard = false
}
}
onVerticalValueChanged: {
if (!verticalRecursionGuard) {
- if (flickableItem.contentY < flickThreshold && verticalDelta > speedThreshold) {
+ var effectiveContentY = flickableItem.contentY - flickableItem.originY
+ if (effectiveContentY < flickThreshold && verticalDelta > speedThreshold) {
flickableItem.flick(ignored, Math.min(maxFlick, acceleration * verticalDelta))
- } else if (flickableItem.contentY > flickableItem.contentHeight
- - flickThreshold - viewport.height && verticalDelta < -speedThreshold) {
+ } else if (effectiveContentY > flickableItem.contentHeight - flickThreshold - viewport.height
+ && verticalDelta < -speedThreshold) {
flickableItem.flick(ignored, Math.max(-maxFlick, acceleration * verticalDelta))
} else {
- flickableItem.contentY = verticalValue
+ flickableItem.contentY = verticalValue + flickableItem.originY
}
}
}
onHorizontalValueChanged: {
if (!horizontalRecursionGuard)
- flickableItem.contentX = horizontalValue
+ flickableItem.contentX = horizontalValue + flickableItem.originX
}
}