@@ -131,14 +131,23 @@ Item {
131 property int sideStageWidth: units.gu(40)
131 property int sideStageWidth: units.gu(40)
132 property bool sideStageVisible: priv.sideStageAppId
132 property bool sideStageVisible: priv.sideStageAppId
134+ // Phase of the animation:
135+ // 0: Starting from right edge, a new app (index 1) comes in from the right
136+ // 1: The app has reached the first snap position.
137+ // 2: The list is dragged further and snaps into the spread view when entering phase 2
134 property int phase
138 property int phase
136 property int phase0Width: sideStageWidth
140 property int phase0Width: sideStageWidth
137 property int phase1Width: sideStageWidth
141 property int phase1Width: sideStageWidth
143+ // Those markers mark the various positions in the spread (ratio to screen width from right to left):
144+ // 0 - 1: following finger, snap back to the beginning on release
139 property real positionMarker1: 0.2
145 property real positionMarker1: 0.2
146+ // 1 - 2: curved snapping movement, snap to nextInStack on release
140 property real positionMarker2: sideStageWidth / spreadView.width
147 property real positionMarker2: sideStageWidth / spreadView.width
148+ // 2 - 3: movement follows finger, snaps to phase 2 (full spread) on release
141 property real positionMarker3: 0.6
149 property real positionMarker3: 0.6
150+ // passing 3, we detach movement from the finger and snap to phase 2 (full spread)
142 property real positionMarker4: 0.8
151 property real positionMarker4: 0.8
144 property int startSnapPosition: phase0Width * 0.5
153 property int startSnapPosition: phase0Width * 0.5
@@ -187,7 +196,7 @@ Item {
188 states: [
197 states: [
190− name: "invalid"
199+ name: "empty"
193 name: "main"
202 name: "main"
@@ -212,7 +221,7 @@ Item {
212 if (priv.mainStageAppId && priv.sideStageAppId) {
221 if (priv.mainStageAppId && priv.sideStageAppId) {
213 return "mainAndOverlay";
222 return "mainAndOverlay";
215− return "invalid";
224+ return "empty";
218 onContentXChanged: {
227 onContentXChanged: {