flick velocity and deceleration
C++ / fmt (pull_request) Successful in 3s
JS/TS / fmt (pull_request) Successful in 15s
JS/TS / lint (pull_request) Successful in 17s
Python / static (pull_request) Successful in 58s
Rust / fmt (pull_request) Successful in 1m4s
Rust / build (pull_request) Successful in 2m14s
C++ / build (pull_request) Successful in 2m36s
Rust / clippy (pull_request) Successful in 1m30s
Python / verify (pull_request) Successful in 2m53s
C++ / clang-tidy (pull_request) Successful in 4m4s

This commit is contained in:
2026-08-17 10:37:00 +02:00
parent 31f73b05e4
commit babfe4b3de
3 changed files with 47 additions and 47 deletions
+13 -3
View File
@@ -10,6 +10,8 @@
#include <QVariantAnimation>
#include <QVariantList>
#include <QVector>
#include <qtypes.h>
#include <qvectornd.h>
namespace ZShell::components {
@@ -150,6 +152,11 @@ class CarouselView : public QQuickItem {
bool active = false;
};
struct VelocitySample {
qint64 t;
qreal x;
};
void rebuildArrangement();
void relayout();
@@ -190,6 +197,9 @@ class CarouselView : public QQuickItem {
QQuickItem* acquireItem();
void releaseAllItems();
void addVelocitySample(qint64 t, qreal x);
qreal sampledVelocity() const;
QQmlComponent* m_delegate = nullptr;
QVariantList m_model;
QVariantMap m_delegateProperties;
@@ -226,9 +236,9 @@ class CarouselView : public QQuickItem {
qreal m_pressContentX = 0;
QElapsedTimer m_dragTimer;
qreal m_lastMoveX = 0;
qint64 m_lastMoveT = 0;
qreal m_velocity = 0;
QVector<VelocitySample> m_velocitySamples;
static constexpr qint64 kVelocitySampleWindowMs = 80;
QVariantAnimation* m_flickAnim = nullptr;