@@ -25,6 +25,15 @@ Item {
25 readonly property int flickableWidth: flickable ? flickable.width : 0
25 readonly property int flickableWidth: flickable ? flickable.width : 0
26 readonly property int flickableContentWidth: flickable ? flickable.contentWidth: 0
26 readonly property int flickableContentWidth: flickable ? flickable.contentWidth: 0
27 readonly property real flickableProgress: flickable ? flickable.contentX / (flickable.contentWidth - flickableWidth) : 0
27 readonly property real flickableProgress: flickable ? flickable.contentX / (flickable.contentWidth - flickableWidth) : 0
28+ // We require the full flickable progress going from 0 to 1 so the user can drag/overshoot tiles in both directions
29+ // 0 => all the tiles are stacked up on the right edge
30+ // 1 => all the tiles are stacked up on the left edge
31+ // However, we also want to restrict tiles to start/end distributed across the screen, so let's adjust the
32+ // progress to work on a smaller area => trim progress on left and right by progressAdjust
33+ // TODO: 2.6 is a value figured by try&error. Is there a way we can calculate it?
34+ readonly property real progressAdjust: (2.6 / ApplicationManager.count)
35+ readonly property real adjustedProgress: (flickableProgress * (1-2*progressAdjust)) + progressAdjust
29 readonly property int contentWidth: flickableWidth - root.margins * 2
38 readonly property int contentWidth: flickableWidth - root.margins * 2
@@ -95,7 +104,7 @@ Item {
95 type: EasingCurve.InOutSine
104 type: EasingCurve.InOutSine
97 readonly property real normalizedEndProgress: endProgress - startProgress
106 readonly property real normalizedEndProgress: endProgress - startProgress
98− readonly property real normalizedProgress: (root.flickableProgress - root.startProgress) / normalizedEndProgress
107+ readonly property real normalizedProgress: (root.adjustedProgress - root.startProgress) / normalizedEndProgress
99 progress: normalizedProgress
108 progress: normalizedProgress