@@ -15,7 +15,7 @@ QtObject {
15 property int targetX: 0
15 property int targetX: 0
16 property int startY: 0
16 property int startY: 0
17 property int targetY: 0
17 property int targetY: 0
18− property real startAngle: 40
18+ property real startAngle: 30
19 property real targetAngle: 0
19 property real targetAngle: 0
20 property int targetHeight: 0
20 property int targetHeight: 0
21 property real startScale: 1.3
21 property real startScale: 1.3
@@ -24,6 +24,7 @@ QtObject {
25 property bool isMainStageApp: false
25 property bool isMainStageApp: false
26 property bool isSideStageApp: false
26 property bool isSideStageApp: false
27+ property bool sideStageOpen: false
27 property int nextInStack: 0
28 property int nextInStack: 0
28 property int shuffledZ: 0
29 property int shuffledZ: 0
@@ -97,46 +98,60 @@ QtObject {
99 readonly property real animatedAngle: {
100 readonly property real animatedAngle: {
101+ var nextStage = appRepeater.itemAt(nextInStack) ? appRepeater.itemAt(nextInStack).stage : ApplicationInfoInterface.MainStage;
100 var startAngle = 0;
103 var startAngle = 0;
101 if (isMainStageApp) {
104 if (isMainStageApp) {
102 startAngle = 0;
105 startAngle = 0;
103 } else if (isSideStageApp) {
106 } else if (isSideStageApp) {
104 startAngle = 0;
107 startAngle = 0;
109+ if (stage == ApplicationInfoInterface.SideStage && itemIndex == nextInStack && !sideStageOpen) {
106− startAngle = root.startAngle;
112+ startAngle = root.startAngle;
109− var nextStage = appRepeater.itemAt(nextInStack) ? appRepeater.itemAt(nextInStack).stage : ApplicationInfoInterface.MainStage;
111 if (progress < breakPoint) {
117 if (progress < breakPoint) {
112− if (stage == nextStage) {
118+ if (itemIndex == nextInStack && sideStageOpen) {
113 return MathUtils.linearAnimation(0, 1, startAngle, targetAngle, progress);
119 return MathUtils.linearAnimation(0, 1, startAngle, targetAngle, progress);
115 return 0;
121 return 0;
118− if (itemIndex == nextInStack || (stage == nextStage && (isMainStageApp || isSideStageApp))) {
124+ if (itemIndex == nextInStack) {
119 return MathUtils.linearAnimation(0, 1, startAngle, targetAngle, progress);
125 return MathUtils.linearAnimation(0, 1, startAngle, targetAngle, progress);
121 return MathUtils.linearAnimation(breakPoint, 1, startAngle, targetAngle, progress);
127 return MathUtils.linearAnimation(breakPoint, 1, startAngle, targetAngle, progress);
124 readonly property real animatedScale: {
130 readonly property real animatedScale: {
131+ var pullingInSideStage = itemIndex == nextInStack && stage == ApplicationInfoInterface.SideStage && !sideStageOpen;
125 var startScale = 1;
133 var startScale = 1;
126 if (isMainStageApp) {
134 if (isMainStageApp) {
127 startScale = 1;
135 startScale = 1;
128 } else if (isSideStageApp) {
136 } else if (isSideStageApp) {
129 startScale = 1;
137 startScale = 1;
139+ if (pullingInSideStage) {
131− startScale = root.startScale;
142+ startScale = root.startScale;
134− if (itemIndex == nextInStack) {
135− return MathUtils.linearAnimation(0, 1, startScale, targetScale, progress)
137 if (progress < breakPoint) {
146 if (progress < breakPoint) {
147+ if (itemIndex == nextInStack && sideStageOpen) {
148+ return MathUtils.linearAnimation(0, 1, startScale, targetScale, progress);
138 return startScale;
150 return startScale;
152+ if (itemIndex == nextInStack) {
153+ return MathUtils.linearAnimation(0, 1, startScale, targetScale, progress)
141 return MathUtils.linearAnimation(breakPoint, 1, startScale, targetScale, progress)
156 return MathUtils.linearAnimation(breakPoint, 1, startScale, targetScale, progress)