mirror of
https://github.com/YACReader/yacreader
synced 2025-06-04 01:28:55 -04:00
Fix flow scrolling in macos
This commit is contained in:
parent
91909f748d
commit
e92a537f95
@ -1,4 +1,6 @@
|
|||||||
#include "scroll_management.h"
|
#include "scroll_management.h"
|
||||||
|
#include <QtCore>
|
||||||
|
#include <QApplication>
|
||||||
|
|
||||||
ScrollManagement::ScrollManagement()
|
ScrollManagement::ScrollManagement()
|
||||||
{
|
{
|
||||||
@ -9,12 +11,24 @@ ScrollManagement::ScrollManagement()
|
|||||||
|
|
||||||
ScrollManagement::Movement ScrollManagement::getMovement(QWheelEvent *event)
|
ScrollManagement::Movement ScrollManagement::getMovement(QWheelEvent *event)
|
||||||
{
|
{
|
||||||
/*QLOG_DEBUG() << "WheelEvent angle delta : " << event->angleDelta();
|
// qDebug() << "WheelEvent angle delta : " << event->angleDelta();
|
||||||
QLOG_DEBUG() << "WheelEvent pixel delta : " << event->pixelDelta();*/
|
// qDebug() << "WheelEvent pixel delta : " << event->pixelDelta();
|
||||||
|
// qDebug() << "Accumulator : " << wheelAccumulator;
|
||||||
|
|
||||||
|
int delta;
|
||||||
int tooFast = 1;
|
int tooFast = 1;
|
||||||
int timeThrottle = 16;
|
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
|
// avoid any events overflood
|
||||||
if ((wheelTimer->elapsed() < tooFast)) {
|
if ((wheelTimer->elapsed() < tooFast)) {
|
||||||
@ -22,12 +36,6 @@ ScrollManagement::Movement ScrollManagement::getMovement(QWheelEvent *event)
|
|||||||
return None;
|
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
|
// Do not process events too fast
|
||||||
if ((wheelTimer->elapsed() < timeThrottle)) {
|
if ((wheelTimer->elapsed() < timeThrottle)) {
|
||||||
event->setAccepted(true);
|
event->setAccepted(true);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user