diff --git a/common/scroll_management.cpp b/common/scroll_management.cpp index a9573037..6bdef5cd 100644 --- a/common/scroll_management.cpp +++ b/common/scroll_management.cpp @@ -1,4 +1,6 @@ #include "scroll_management.h" +#include +#include 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);