on xenial help sign in
experiment with linear movement and folding on both ends
commitf15cc28df6978713044f6e0f4065133f47307083 authorMichael Zanetti <michael.zanetti@canonical.com> dateFri 20 Mar 2015, 12:08 (12 years ago) parenta19a018
2 files changed+17−3
qml/Stages/DesktopStage.qml+2−2 qml/Stages/SpreadMaths.qml+15−1
qml/Stages/DesktopStage.qml+2−2
@@ -46,7 +46,7 @@ FocusScope {
4646 if (root.altTabPressed) {
4747 print("should tab next")
4848 appRepeater.highlightedIndex = (appRepeater.highlightedIndex + 1) % ApplicationManager.count
49− spreadFlickable.snapTo(spreadFlickable.width / 5 * Math.max(0, appRepeater.highlightedIndex - 3))
49+ spreadFlickable.snapTo(spreadFlickable.width / 5 * Math.max(0, Math.min(ApplicationManager.count - 5, appRepeater.highlightedIndex - 2)))
5050 }
5151 }
5252
@@ -55,7 +55,7 @@ FocusScope {
5555 if (root.altTabPressed) {
5656 var newIndex = appRepeater.highlightedIndex - 1 >= 0 ? appRepeater.highlightedIndex - 1 : ApplicationManager.count - 1;
5757 appRepeater.highlightedIndex = newIndex;
58− spreadFlickable.snapTo(spreadFlickable.width / 5 * Math.max(0, appRepeater.highlightedIndex - 3))
58+ spreadFlickable.snapTo(spreadFlickable.width / 5 * Math.max(0, Math.min(ApplicationManager.count - 5, appRepeater.highlightedIndex - 2)))
5959 }
6060 }
6161
qml/Stages/SpreadMaths.qml+15−1
@@ -1,11 +1,25 @@
11import QtQuick 2.2
22import Utils 0.1
3+import Unity.Application 0.1
34
45QtObject {
56 id: root
67
78 function desktopX(index, totalWidth, flickableX) {
8− var distance = totalWidth / 5;
9+ var margins = units.gu(5);
10+ var distance = (totalWidth - margins * 2) / 5;
11+ var foldedDistance = units.gu(0.5)
12+ var reverseIndex = ApplicationManager.count - index
13+
14+ var x = (index * distance) - flickableX + margins;
15+ // limit at left
16+ x = Math.max(margins + foldedDistance * index, x);
17+ // limit at right
18+ x = Math.min(totalWidth - margins - distance - foldedDistance * reverseIndex, x);
19+
20+ return x
21+
22+
923 var startProgress = 0;
1024 var endProgress = 1;
1125 var startValue = index * distance;