shift-shell/kwin/mobiletaskswitcher/qml/FlickContainer.qml
Luis Büchi 63e228237f remove QML debugging flag, remove unused scrollingTasks variable
scrollingTasks was not hooked up, if we want to reintroduce it in the future let's do so properly instead of keeping it around half-dead and broken
2024-05-13 18:44:11 +02:00

65 lines
2.1 KiB
QML

// SPDX-FileCopyrightText: 2021-2023 Devin Lin <devin@kde.org>
// SPDX-License-Identifier: LGPL-2.0-or-later
import QtQuick
Flickable {
// TODO flickable is busted, it refuses to actually do any flicks with touch input, only works with mouse
// we work around this somewhat by snapping to the nearest task in which direction it was moving when letting go
// no matter how far away we are (and no matter how fast we go)
id: root
required property var taskSwitcherState
required property var taskSwitcherHelpers
// we use flickable solely for capturing flicks, not positioning elements
// the horizontal distance we can swipe in one flick
contentWidth: (taskSwitcherHelpers.taskWidth + taskSwitcherHelpers.taskSpacing) * tasksCount
contentHeight: height
contentX: startContentX
readonly property real startContentX: (taskSwitcherHelpers.taskWidth + taskSwitcherHelpers.taskSpacing) * tasksCount
property bool movingRight: false // TODO needed for flickable not flicking workaround
// update position from horizontal flickable movement
property real oldContentX
onContentXChanged: {
if (moving) {
// TODO whenever flicking actually works this should probably be swapped with
// a minimum velocity after which it should snap to the nearest task
taskSwitcherState.xPosition += contentX - oldContentX;
}
movingRight = contentX < oldContentX;
oldContentX = contentX;
}
onMovementStarted: {
taskSwitcherHelpers.cancelAnimations();
}
onMovementEnded: {
taskSwitcherHelpers.snapToNearestTaskWorkaround(movingRight);
resetPosition();
}
onFlickStarted: {
root.cancelFlick();
}
onFlickEnded: {
// taskSwitcherHelpers.snapToNearestTaskWorkaround(movingRight);
// resetPosition();
}
onDraggingChanged: {
if (dragging) {
taskSwitcherHelpers.cancelAnimations();
} else {
resetPosition();
}
}
function resetPosition() {
oldContentX = startContentX;
contentX = startContentX;
}
}