Fix flow scrolling in macos

This commit is contained in:
Luis Ángel San Martín 2022-09-04 10:05:11 +02:00
parent 91909f748d
commit e92a537f95

View File

@ -1,4 +1,6 @@
#include "scroll_management.h"
#include <QtCore>
#include <QApplication>
ScrollManagement::ScrollManagement()
{
@ -9,12 +11,24 @@ ScrollManagement::ScrollManagement()
ScrollManagement::Movement ScrollManagement::getMovement(QWheelEvent *event)
{
/*QLOG_DEBUG() << "WheelEvent angle delta : " << event->angleDelta();
QLOG_DEBUG() << "WheelEvent pixel delta : " << event->pixelDelta();*/
// qDebug() << "WheelEvent angle delta : " << event->angleDelta();
// qDebug() << "WheelEvent pixel delta : " << event->pixelDelta();
// qDebug() << "Accumulator : " << wheelAccumulator;
int delta;
int tooFast = 1;
int timeThrottle = 16;
int minimumMove = 70;
int minimumMove;
if (event->pixelDelta().x() != 0 || event->pixelDelta().y() != 0) {
delta = event->pixelDelta().y() + event->pixelDelta().x();
minimumMove = 30;
} else {
delta = (event->angleDelta().y() / 8) + (event->angleDelta().x() / 8);
minimumMove = 8;
}
wheelAccumulator += delta;
// avoid any events overflood
if ((wheelTimer->elapsed() < tooFast)) {
@ -22,12 +36,6 @@ ScrollManagement::Movement ScrollManagement::getMovement(QWheelEvent *event)
return None;
}
// Accumulate the delta
if ((event->angleDelta().y() < 0) != (wheelAccumulator < 0)) // different sign means change in direction
wheelAccumulator = 0;
wheelAccumulator += event->angleDelta().y();
// Do not process events too fast
if ((wheelTimer->elapsed() < timeThrottle)) {
event->setAccepted(true);