summaryrefslogtreecommitdiffstats
path: root/framework/qml/ScrollHelper.qml
diff options
context:
space:
mode:
Diffstat (limited to 'framework/qml/ScrollHelper.qml')
-rw-r--r--framework/qml/ScrollHelper.qml36
1 files changed, 25 insertions, 11 deletions
diff --git a/framework/qml/ScrollHelper.qml b/framework/qml/ScrollHelper.qml
index 9fe47b6c..add737b4 100644
--- a/framework/qml/ScrollHelper.qml
+++ b/framework/qml/ScrollHelper.qml
@@ -43,6 +43,22 @@ MouseArea {
43 root.parent = flickable 43 root.parent = flickable
44 } 44 }
45 45
46 function scrollByPixelDelta(flickableItem, pixelDelta) {
47 if (!pixelDelta) {
48 return flickableItem.contentY;
49 }
50
51 var minYExtent = flickableItem.originY + flickableItem.topMargin;
52 var maxYExtent = (flickableItem.contentHeight + flickableItem.bottomMargin + flickableItem.originY) - flickableItem.height;
53
54 if (typeof(flickableItem.headerItem) !== "undefined" && flickableItem.headerItem) {
55 minYExtent += flickableItem.headerItem.height
56 }
57
58 //Avoid overscrolling
59 return Math.max(minYExtent, Math.min(maxYExtent, flickableItem.contentY - pixelDelta));
60 }
61
46 function calculateNewPosition(flickableItem, wheel) { 62 function calculateNewPosition(flickableItem, wheel) {
47 //Nothing to scroll 63 //Nothing to scroll
48 if (flickableItem.contentHeight < flickableItem.height) { 64 if (flickableItem.contentHeight < flickableItem.height) {
@@ -64,19 +80,17 @@ MouseArea {
64 pixelDelta = wheel.pixelDelta.y 80 pixelDelta = wheel.pixelDelta.y
65 } 81 }
66 82
67 if (!pixelDelta) { 83 return scrollByPixelDelta(flickableItem, pixelDelta);
68 return flickableItem.contentY; 84 }
69 }
70
71 var minYExtent = flickableItem.originY + flickableItem.topMargin;
72 var maxYExtent = (flickableItem.contentHeight + flickableItem.bottomMargin + flickableItem.originY) - flickableItem.height;
73 85
74 if (typeof(flickableItem.headerItem) !== "undefined" && flickableItem.headerItem) { 86 function scrollDown() {
75 minYExtent += flickableItem.headerItem.height 87 flickable.flick(0, 0);
76 } 88 flickable.contentY = scrollByPixelDelta(flickable, -60); //3 lines * 20 pixels
89 }
77 90
78 //Avoid overscrolling 91 function scrollUp() {
79 return Math.max(minYExtent, Math.min(maxYExtent, flickableItem.contentY - pixelDelta)); 92 flickable.flick(0, 0);
93 flickable.contentY = scrollByPixelDelta(flickable, 60); //3 lines * 20 pixels
80 } 94 }
81 95
82 onWheel: { 96 onWheel: {