diff options
| author | Peter Penz <[email protected]> | 2009-12-06 13:05:56 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2009-12-06 13:05:56 +0000 |
| commit | 65d3008d51a83bac99435a486f5e8c5cdb7e92c1 (patch) | |
| tree | c62d8c9ac67a9f04681dc120c444ae2cb42f9f72 /src | |
| parent | 5f332cd8dd785714600ac8231dce8b2ee6e97994 (diff) | |
Respect drag time delay from application before starting the automatic scrolling. Thanks to Christoph Feck for the initial patch!
CCMAIL: [email protected]
BUG: 205664
CCBUG: 212989
svn path=/trunk/KDE/kdebase/apps/; revision=1059377
Diffstat (limited to 'src')
| -rw-r--r-- | src/dolphinviewautoscroller.cpp | 16 | ||||
| -rw-r--r-- | src/dolphinviewautoscroller.h | 3 |
2 files changed, 17 insertions, 2 deletions
diff --git a/src/dolphinviewautoscroller.cpp b/src/dolphinviewautoscroller.cpp index e0ed342dd..45896a5eb 100644 --- a/src/dolphinviewautoscroller.cpp +++ b/src/dolphinviewautoscroller.cpp @@ -32,10 +32,12 @@ DolphinViewAutoScroller::DolphinViewAutoScroller(QAbstractItemView* parent) : QObject(parent), m_rubberBandSelection(false), m_keyPressed(false), + m_initializedTimestamp(false), m_horizontalScrollInc(0), m_verticalScrollInc(0), m_itemView(parent), - m_timer(0) + m_timer(0), + m_timestamp() { m_itemView->setAutoScroll(false); m_itemView->viewport()->installEventFilter(this); @@ -124,6 +126,10 @@ bool DolphinViewAutoScroller::eventFilter(QObject* watched, QEvent* event) void DolphinViewAutoScroller::scrollViewport() { + if (m_timestamp.elapsed() < QApplication::startDragTime()) { + return; + } + QScrollBar* verticalScrollBar = m_itemView->verticalScrollBar(); if (verticalScrollBar != 0) { const int value = verticalScrollBar->value(); @@ -156,6 +162,7 @@ void DolphinViewAutoScroller::triggerAutoScroll() m_itemView->horizontalScrollBar()->isVisible(); if (!verticalScrolling && !horizontalScrolling) { // no scrollbars are shown at all, so no autoscrolling is necessary + stopAutoScroll(); return; } @@ -170,9 +177,13 @@ void DolphinViewAutoScroller::triggerAutoScroll() if (m_timer->isActive()) { if ((m_horizontalScrollInc == 0) && (m_verticalScrollInc == 0)) { - m_timer->stop(); + stopAutoScroll(); } } else if ((m_horizontalScrollInc != 0) || (m_verticalScrollInc != 0)) { + if (!m_initializedTimestamp) { + m_initializedTimestamp = true; + m_timestamp.start(); + } m_timer->start(); } } @@ -182,6 +193,7 @@ void DolphinViewAutoScroller::stopAutoScroll() m_timer->stop(); m_horizontalScrollInc = 0; m_verticalScrollInc = 0; + m_initializedTimestamp = false; } int DolphinViewAutoScroller::calculateScrollIncrement(int cursorPos, int rangeSize) const diff --git a/src/dolphinviewautoscroller.h b/src/dolphinviewautoscroller.h index a858d27cb..9fd35d494 100644 --- a/src/dolphinviewautoscroller.h +++ b/src/dolphinviewautoscroller.h @@ -20,6 +20,7 @@ #ifndef DOLPHINVIEWAUTOSCROLLER_H #define DOLPHINVIEWAUTOSCROLLER_H +#include <QTime> #include <QObject> class QAbstractItemView; @@ -67,10 +68,12 @@ private: private: bool m_rubberBandSelection; bool m_keyPressed; + bool m_initializedTimestamp; int m_horizontalScrollInc; int m_verticalScrollInc; QAbstractItemView* m_itemView; QTimer* m_timer; + QTime m_timestamp; }; #endif |
