@@ -31,13 +31,13 @@ Item {
32 readonly property alias dragging: priv.dragging
32 readonly property alias dragging: priv.dragging
34− signal fakeMaximizeAnimationRequested(real progress)
34+ signal fakeMaximizeAnimationRequested(real amount)
35− signal fakeMaximizeLeftAnimationRequested(real progress)
35+ signal fakeMaximizeLeftAnimationRequested(real amount)
36− signal fakeMaximizeRightAnimationRequested(real progress)
36+ signal fakeMaximizeRightAnimationRequested(real amount)
37− signal fakeMaximizeTopLeftAnimationRequested(real progress)
37+ signal fakeMaximizeTopLeftAnimationRequested(real amount)
38− signal fakeMaximizeTopRightAnimationRequested(real progress)
38+ signal fakeMaximizeTopRightAnimationRequested(real amount)
39− signal fakeMaximizeBottomLeftAnimationRequested(real progress)
39+ signal fakeMaximizeBottomLeftAnimationRequested(real amount)
40− signal fakeMaximizeBottomRightAnimationRequested(real progress)
40+ signal fakeMaximizeBottomRightAnimationRequested(real amount)
41 signal stopFakeAnimation()
41 signal stopFakeAnimation()
43 signal shouldCommitSnapWindow()
43 signal shouldCommitSnapWindow()
@@ -118,47 +118,47 @@ Item {
118 target.requestedX = Math.round(pos.x - priv.distanceX);
118 target.requestedX = Math.round(pos.x - priv.distanceX);
119 target.requestedY = Math.round(Math.max(pos.y - priv.distanceY, PanelState.panelHeight));
119 target.requestedY = Math.round(Math.max(pos.y - priv.distanceY, PanelState.panelHeight));
121− if (sensingPoints) {
121+ if (sensingPoints) { // edge/corner detection when dragging via the touch overlay
122− print("!!! Detecting edges/corners in touch mode")
123 if (sensingPoints.topLeft.x < priv.triggerArea && sensingPoints.topLeft.y < PanelState.panelHeight
122 if (sensingPoints.topLeft.x < priv.triggerArea && sensingPoints.topLeft.y < PanelState.panelHeight
124 && target.canBeCornerMaximized) { // top left
123 && target.canBeCornerMaximized) { // top left
125− priv.progress = priv.progressInCorner(0, PanelState.panelHeight, sensingPoints.topLeft.x, sensingPoints.topLeft.y);
124+ priv.progress = priv.progressInCorner(0, PanelState.panelHeight, sensingPoints.topLeft.x, sensingPoints.topLeft.y) - priv.progress;
126 priv.resetEdges();
125 priv.resetEdges();
127 priv.nearTopLeftCorner = true;
126 priv.nearTopLeftCorner = true;
128− root.fakeMaximizeTopLeftAnimationRequested(priv.progress);
127+ root.fakeMaximizeTopLeftAnimationRequested(priv.progress * priv.triggerArea);
129 } else if (sensingPoints.topRight.x > stageWidth - priv.triggerArea && sensingPoints.topRight.y < PanelState.panelHeight
128 } else if (sensingPoints.topRight.x > stageWidth - priv.triggerArea && sensingPoints.topRight.y < PanelState.panelHeight
130 && target.canBeCornerMaximized) { // top right
129 && target.canBeCornerMaximized) { // top right
131− priv.progress = priv.progressInCorner(stageWidth, PanelState.panelHeight, sensingPoints.topRight.x, sensingPoints.topRight.y);
130+ priv.progress = priv.progressInCorner(stageWidth, PanelState.panelHeight, sensingPoints.topRight.x, sensingPoints.topRight.y) - priv.progress;
132 priv.resetEdges();
131 priv.resetEdges();
133 priv.nearTopRightCorner = true;
132 priv.nearTopRightCorner = true;
134− root.fakeMaximizeTopRightAnimationRequested(priv.progress);
133+ root.fakeMaximizeTopRightAnimationRequested(priv.progress * priv.triggerArea);
135 } else if (sensingPoints.bottomLeft.x < priv.triggerArea && sensingPoints.bottomLeft.y > stageHeight - priv.triggerArea
134 } else if (sensingPoints.bottomLeft.x < priv.triggerArea && sensingPoints.bottomLeft.y > stageHeight - priv.triggerArea
136 && target.canBeCornerMaximized) { // bottom left
135 && target.canBeCornerMaximized) { // bottom left
137− priv.progress = priv.progressInCorner(0, stageHeight, sensingPoints.bottomLeft.x, sensingPoints.bottomLeft.y);
136+ priv.progress = priv.progressInCorner(0, stageHeight, sensingPoints.bottomLeft.x, sensingPoints.bottomLeft.y) - priv.progress;
138 priv.resetEdges();
137 priv.resetEdges();
139 priv.nearBottomLeftCorner = true;
138 priv.nearBottomLeftCorner = true;
140− root.fakeMaximizeBottomLeftAnimationRequested(priv.progress);
139+ root.fakeMaximizeBottomLeftAnimationRequested(priv.progress * priv.triggerArea);
141 } else if (sensingPoints.bottomRight.x > stageWidth - priv.triggerArea && sensingPoints.bottomRight.y > stageHeight - priv.triggerArea
140 } else if (sensingPoints.bottomRight.x > stageWidth - priv.triggerArea && sensingPoints.bottomRight.y > stageHeight - priv.triggerArea
142 && target.canBeCornerMaximized) { // bottom right
141 && target.canBeCornerMaximized) { // bottom right
143− priv.progress = priv.progressInCorner(stageWidth, stageHeight, sensingPoints.bottomRight.x, sensingPoints.bottomRight.y);
142+ priv.progress = priv.progressInCorner(stageWidth, stageHeight, sensingPoints.bottomRight.x, sensingPoints.bottomRight.y) - priv.progress;
144 priv.resetEdges();
143 priv.resetEdges();
145 priv.nearBottomRightCorner = true;
144 priv.nearBottomRightCorner = true;
146− root.fakeMaximizeBottomRightAnimationRequested(priv.progress);
145+ root.fakeMaximizeBottomRightAnimationRequested(priv.progress * priv.triggerArea);
147 } else if (sensingPoints.left.x < priv.triggerArea && target.canBeMaximizedLeftRight) { // left
146 } else if (sensingPoints.left.x < priv.triggerArea && target.canBeMaximizedLeftRight) { // left
148− priv.progress = MathUtils.clampAndProject(sensingPoints.left.x, priv.triggerArea, 0, 0, 1);
147+ priv.progress = MathUtils.clampAndProject(sensingPoints.left.x, priv.triggerArea, 0, 0, 1) - priv.progress;
149 priv.resetEdges();
148 priv.resetEdges();
150 priv.nearLeftEdge = true;
149 priv.nearLeftEdge = true;
151− root.fakeMaximizeLeftAnimationRequested(priv.progress);
150+ root.fakeMaximizeLeftAnimationRequested(priv.progress * priv.triggerArea);
152 } else if (sensingPoints.right.x > stageWidth - priv.triggerArea && target.canBeMaximizedLeftRight) { // right
151 } else if (sensingPoints.right.x > stageWidth - priv.triggerArea && target.canBeMaximizedLeftRight) { // right
153− priv.progress = MathUtils.clampAndProject(sensingPoints.right.x, stageWidth - priv.triggerArea, stageWidth, 0, 1);
152+ priv.progress = MathUtils.clampAndProject(sensingPoints.right.x, stageWidth - priv.triggerArea, stageWidth, 0, 1) - priv.progress;
154 priv.resetEdges();
153 priv.resetEdges();
155 priv.nearRightEdge = true;
154 priv.nearRightEdge = true;
156− root.fakeMaximizeRightAnimationRequested(priv.progress);
155+ root.fakeMaximizeRightAnimationRequested(priv.progress * priv.triggerArea);
157 } else if (sensingPoints.top.y < PanelState.panelHeight && target.canBeMaximized) { // top
156 } else if (sensingPoints.top.y < PanelState.panelHeight && target.canBeMaximized) { // top
158− priv.progress = MathUtils.clampAndProject(sensingPoints.top.y, Math.max(PanelState.panelHeight, priv.triggerArea), 0, 0, 1);
157+ priv.progress = MathUtils.clampAndProject(sensingPoints.top.y, Math.max(PanelState.panelHeight, priv.triggerArea), 0, 0, 1) - priv.progress;
159 priv.resetEdges();
158 priv.resetEdges();
160 priv.nearTopEdge = true;
159 priv.nearTopEdge = true;
161− root.fakeMaximizeAnimationRequested(priv.progress);
160+ root.fakeMaximizeAnimationRequested(priv.progress * priv.triggerArea);
161+ priv.progress = tmpProgress;
162 } else if (priv.nearLeftEdge || priv.nearRightEdge || priv.nearTopEdge || priv.nearTopLeftCorner || priv.nearTopRightCorner ||
162 } else if (priv.nearLeftEdge || priv.nearRightEdge || priv.nearTopEdge || priv.nearTopLeftCorner || priv.nearTopRightCorner ||
163 priv.nearBottomLeftCorner || priv.nearBottomRightCorner) {
163 priv.nearBottomLeftCorner || priv.nearBottomRightCorner) {
164 print("!!! Exited")
164 print("!!! Exited")
@@ -172,33 +172,11 @@ Item {
173 function handleReleased(touchMode) {
173 function handleReleased(touchMode) {
174 if (touchMode) {
174 if (touchMode) {
175− if (priv.progress < 0.3) { // cancel the preview shape if under 30%
175+ root.shouldCommitSnapWindow();
176− priv.progress = 0;
176+ priv.progress = 0;
178− root.stopFakeAnimation();
179− } else if (priv.nearLeftEdge) {
180− target.maximizeLeft();
182− } else if (priv.nearTopEdge) {
185− } else if (priv.nearRightEdge) {
186− target.maximizeRight();
188− } else if (priv.nearTopLeftCorner) {
189− target.maximizeTopLeft();
191− } else if (priv.nearTopRightCorner) {
192− target.maximizeTopRight();
194− } else if (priv.nearBottomLeftCorner) {
195− target.maximizeBottomLeft();
197− } else if (priv.nearBottomRightCorner) {
198− target.maximizeBottomRight();
199− priv.resetEdges();
177+ priv.resetEdges();
201− } else if ((target.state == "normal" || target.state == "restored") && priv.progress == 0) {
179+ if ((target.state == "normal" || target.state == "restored") && priv.progress == 0) {
202 // save the x/y to restore to
180 // save the x/y to restore to
203 print("!!! Saving restoredX/Y")
181 print("!!! Saving restoredX/Y")
204 target.restoredX = target.x;
182 target.restoredX = target.x;