mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-04-26 14:23:09 +00:00
homescreens/folio: Halve the needed swipe distance for swipe detection
SwipeArea requires 10px to differentiate between taps and swipes. HomeScreenState uses a further 10px to differentiate between vertical and horizontal swipes. This MR combines the swipe detection together so that we only need 10px rather than 20px for gesture detection.
This commit is contained in:
parent
4c552b84be
commit
0ce95a604a
5 changed files with 12 additions and 6 deletions
|
|
@ -284,7 +284,7 @@ void SwipeArea::handleMoveEvent(QPointerEvent *event, QPointF point)
|
||||||
m_lastPos = point;
|
m_lastPos = point;
|
||||||
m_stealMouse = true;
|
m_stealMouse = true;
|
||||||
setMoving(true);
|
setMoving(true);
|
||||||
Q_EMIT swipeStarted(m_startPos);
|
Q_EMIT swipeStarted(m_startPos, m_pressPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
const QVector2D totalDelta = QVector2D(point - m_startPos);
|
const QVector2D totalDelta = QVector2D(point - m_startPos);
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ Q_SIGNALS:
|
||||||
void pressedChanged();
|
void pressedChanged();
|
||||||
|
|
||||||
void swipeEnded();
|
void swipeEnded();
|
||||||
void swipeStarted(QPointF point);
|
void swipeStarted(QPointF currentPoint, QPointF startPoint); // we let the user move a couple of pixels for swipe detection
|
||||||
|
|
||||||
// deltaX, deltaY - amount moved since last swipeMove()
|
// deltaX, deltaY - amount moved since last swipeMove()
|
||||||
// totalDeltaX, totalDeltaY - amount move since startedSwipe()
|
// totalDeltaX, totalDeltaY - amount move since startedSwipe()
|
||||||
|
|
|
||||||
|
|
@ -868,13 +868,17 @@ void HomeScreenState::cancelDelegateDrag()
|
||||||
swipeEnded();
|
swipeEnded();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HomeScreenState::swipeStarted()
|
void HomeScreenState::swipeStarted(qreal deltaX, qreal deltaY)
|
||||||
{
|
{
|
||||||
if (m_swipeState != SwipeState::None) {
|
if (m_swipeState != SwipeState::None) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
setSwipeState(SwipeState::DeterminingSwipeType);
|
setSwipeState(SwipeState::DeterminingSwipeType);
|
||||||
|
|
||||||
|
// the user interaction has already moved a bit (for swipe detection),
|
||||||
|
// so we call the move event too.
|
||||||
|
swipeMoved(deltaX, deltaY, deltaX, deltaY);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HomeScreenState::swipeEnded()
|
void HomeScreenState::swipeEnded()
|
||||||
|
|
|
||||||
|
|
@ -334,7 +334,7 @@ public Q_SLOTS:
|
||||||
void cancelDelegateDrag();
|
void cancelDelegateDrag();
|
||||||
|
|
||||||
// from SwipeArea
|
// from SwipeArea
|
||||||
void swipeStarted();
|
void swipeStarted(qreal deltaX, qreal deltaY);
|
||||||
void swipeEnded();
|
void swipeEnded();
|
||||||
void swipeMoved(qreal totalDeltaX, qreal totalDeltaY, qreal deltaX, qreal deltaY);
|
void swipeMoved(qreal totalDeltaX, qreal totalDeltaY, qreal deltaX, qreal deltaY);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -107,8 +107,10 @@ Item {
|
||||||
folio.HomeScreenState.swipeState === Folio.HomeScreenState.SwipingAppDrawerGrid ||
|
folio.HomeScreenState.swipeState === Folio.HomeScreenState.SwipingAppDrawerGrid ||
|
||||||
folio.HomeScreenState.viewState !== Folio.HomeScreenState.AppDrawerView)
|
folio.HomeScreenState.viewState !== Folio.HomeScreenState.AppDrawerView)
|
||||||
|
|
||||||
onSwipeStarted: {
|
onSwipeStarted: (currentPos, startPos) => {
|
||||||
homeScreenState.swipeStarted();
|
const deltaX = currentPos.x - startPos.x;
|
||||||
|
const deltaY = currentPos.y - startPos.y;
|
||||||
|
homeScreenState.swipeStarted(deltaX, deltaY);
|
||||||
}
|
}
|
||||||
onSwipeEnded: {
|
onSwipeEnded: {
|
||||||
homeScreenState.swipeEnded();
|
homeScreenState.swipeEnded();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue