diff --git a/components/mobileshell/qml/taskswitcher/FlickContainer.qml b/components/mobileshell/qml/taskswitcher/FlickContainer.qml index 372c166925e1edacb7258ee397f6abb056c27a7b..6f2227ea11fb069dbd3ab322d67cf648acdb58f1 100644 --- a/components/mobileshell/qml/taskswitcher/FlickContainer.qml +++ b/components/mobileshell/qml/taskswitcher/FlickContainer.qml @@ -19,36 +19,15 @@ Flickable { required property var taskSwitcherState // we use flickable solely for capturing flicks, not positioning elements - contentWidth: width + 99999 + contentWidth: width * tasksCount contentHeight: height contentX: startContentX - readonly property real startContentX: contentWidth / 2 - - property bool positionChangedDueToFlickable: false - - // ensure that flickable is not moving when other sources are changing position - Connections { - target: root.taskSwitcherState + readonly property real startContentX: 0 - onXPositionChanged: { - if (!root.positionChangedDueToFlickable) { - root.cancelMovement(); - } - root.positionChangedDueToFlickable = true; - } - onYPositionChanged: { - if (!root.positionChangedDueToFlickable) { - root.cancelMovement(); - } - root.positionChangedDueToFlickable = true; - } - } - // update position from horizontal flickable movement property real oldContentX onContentXChanged: { - positionChangedDueToFlickable = true; taskSwitcherState.xPosition += contentX - oldContentX; oldContentX = contentX; } @@ -58,6 +37,10 @@ Flickable { resetPosition(); taskSwitcherState.updateState(); } + + onFlickStarted: { + root.cancelFlick(); + } onFlickEnded: { resetPosition(); taskSwitcherState.updateState(); @@ -65,7 +48,6 @@ Flickable { onDraggingChanged: { if (!dragging) { - cancelMovement(); resetPosition(); taskSwitcherState.updateState(); } else { @@ -73,15 +55,7 @@ Flickable { } } - function cancelMovement() { - root.cancelFlick(); - - // HACK: cancelFlick() doesn't seem to cancel flicks... - root.flick(-horizontalVelocity, 0); - } - function resetPosition() { - positionChangedDueToFlickable = true; oldContentX = startContentX; contentX = startContentX; } diff --git a/containments/homescreens/default/package/contents/ui/FlickContainer.qml b/containments/homescreens/default/package/contents/ui/FlickContainer.qml index 24dc526f275042c7ebb6b97cafeedddf07a2f661..4630b538ca43633a77b1b267f81706fbafe4a32a 100644 --- a/containments/homescreens/default/package/contents/ui/FlickContainer.qml +++ b/containments/homescreens/default/package/contents/ui/FlickContainer.qml @@ -26,37 +26,15 @@ Flickable { readonly property real startContentX: contentWidth / 2 readonly property real startContentY: contentHeight / 2 - - property bool positionChangedDueToFlickable: false - - // ensure that flickable is not moving when other sources are changing position - Connections { - target: root.homeScreenState - - onXPositionChanged: { - if (!root.positionChangedDueToFlickable) { - root.cancelMovement(); - } - root.positionChangedDueToFlickable = true; - } - onYPositionChanged: { - if (!root.positionChangedDueToFlickable) { - root.cancelMovement(); - } - root.positionChangedDueToFlickable = true; - } - } - + // update position from flickable movement property real oldContentX property real oldContentY onContentXChanged: { - positionChangedDueToFlickable = true; homeScreenState.updatePositionWithOffset(contentX - oldContentX, 0); oldContentX = contentX; } onContentYChanged: { - positionChangedDueToFlickable = true; homeScreenState.updatePositionWithOffset(0, -(contentY - oldContentY)); oldContentY = contentY; } @@ -75,11 +53,13 @@ Flickable { onDragStarted: homeScreenState.cancelEditModeForItemsRequested() onDragEnded: homeScreenState.cancelEditModeForItemsRequested() - onFlickStarted: homeScreenState.cancelEditModeForItemsRequested() + onFlickStarted: { + homeScreenState.cancelEditModeForItemsRequested(); + root.cancelFlick(); + } onDraggingChanged: { if (!dragging) { - cancelMovement(); resetPosition(); if (!homeScreenState.animationsRunning) { homeScreenState.updateState(); @@ -89,15 +69,7 @@ Flickable { } } - function cancelMovement() { - root.cancelFlick(); - - // HACK: cancelFlick() doesn't seem to cancel flicks... - root.flick(-horizontalVelocity, -verticalVelocity); - } - function resetPosition() { - positionChangedDueToFlickable = true; oldContentX = startContentX; contentX = startContentX; oldContentY = startContentY; diff --git a/look-and-feel/contents/lockscreen/FlickContainer.qml b/look-and-feel/contents/lockscreen/FlickContainer.qml index 293f8ef6e6689628374a23d7f9c7b927d108f17c..762cc3a46ca0413b245e5cdf3c37ad61dae24a2b 100644 --- a/look-and-feel/contents/lockscreen/FlickContainer.qml +++ b/look-and-feel/contents/lockscreen/FlickContainer.qml @@ -49,13 +49,12 @@ Flickable { // we use flickable solely for capturing flicks, not positioning elements contentWidth: width - contentHeight: height + 99999 + contentHeight: height * 2 contentX: 0 contentY: startContentY readonly property real startContentY: contentHeight / 2 - property bool positionChangedDueToFlickable: false property int oldPosition: position property bool movingUp: false @@ -63,18 +62,11 @@ Flickable { onPositionChanged: { movingUp = oldPosition <= position; oldPosition = position; - - // ensure that flickable is not moving when other sources are changing position - if (!positionChangedDueToFlickable) { - cancelMovement(); - } - positionChangedDueToFlickable = true; } // update position from flickable movement property real oldContentY onContentYChanged: { - positionChangedDueToFlickable = true; position = Math.max(0, Math.min(keypadHeight, position + (contentY - oldContentY))); oldContentY = contentY; } @@ -86,11 +78,12 @@ Flickable { } resetPosition(); } + + onFlickStarted: root.cancelFlick() onFlickEnded: resetPosition(); onDraggingChanged: { if (!dragging) { - cancelMovement(); resetPosition(); if (!positionAnim.running) { root.updateState(); @@ -100,15 +93,7 @@ Flickable { } } - function cancelMovement() { - root.cancelFlick(); - - // HACK: cancelFlick() doesn't seem to cancel flicks... - root.flick(-horizontalVelocity, -verticalVelocity); - } - function resetPosition() { - positionChangedDueToFlickable = true; oldContentY = startContentY; contentY = startContentY; }