X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/c91c770ef1a60e7966048ece0ebfe861c8b288d1..60d555fa55f025f3ecaa82cf95f012cbbbeb8ddc:/src/dolphinviewautoscroller.cpp diff --git a/src/dolphinviewautoscroller.cpp b/src/dolphinviewautoscroller.cpp index 767a5b458..75dab3214 100644 --- a/src/dolphinviewautoscroller.cpp +++ b/src/dolphinviewautoscroller.cpp @@ -26,6 +26,7 @@ #include #include #include +#include DolphinViewAutoScroller::DolphinViewAutoScroller(QAbstractItemView* parent) : QObject(parent), @@ -33,7 +34,7 @@ DolphinViewAutoScroller::DolphinViewAutoScroller(QAbstractItemView* parent) : m_horizontalScrollInc(0), m_verticalScrollInc(0), m_itemView(parent), - m_timer() + m_timer(0) { m_itemView->setAutoScroll(false); m_itemView->viewport()->installEventFilter(this); @@ -48,6 +49,11 @@ DolphinViewAutoScroller::~DolphinViewAutoScroller() { } +bool DolphinViewAutoScroller::isActive() const +{ + return m_timer->isActive(); +} + bool DolphinViewAutoScroller::eventFilter(QObject* watched, QEvent* event) { if (watched == m_itemView->viewport()) { @@ -155,18 +161,18 @@ int DolphinViewAutoScroller::calculateScrollIncrement(int cursorPos, int rangeSi { int inc = 0; - const int minSpeed = 2; - const int maxSpeed = 32; - const int speedLimiter = 8; - const int autoScrollBorder = 32; + const int minSpeed = 4; + const int maxSpeed = 768; + const int speedLimiter = 48; + const int autoScrollBorder = 64; if (cursorPos < autoScrollBorder) { - inc = -minSpeed + (cursorPos - autoScrollBorder) / speedLimiter; + inc = -minSpeed + qAbs(cursorPos - autoScrollBorder) * (cursorPos - autoScrollBorder) / speedLimiter; if (inc < -maxSpeed) { inc = -maxSpeed; } } else if (cursorPos > rangeSize - autoScrollBorder) { - inc = minSpeed + (cursorPos - rangeSize + autoScrollBorder) / speedLimiter; + inc = minSpeed + qAbs(cursorPos - rangeSize + autoScrollBorder) * (cursorPos - rangeSize + autoScrollBorder) / speedLimiter; if (inc > maxSpeed) { inc = maxSpeed; }