diff options
| author | Peter Penz <[email protected]> | 2012-01-17 09:57:58 +0100 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2012-01-17 10:04:00 +0100 |
| commit | ab61a6174e046ef2f5ca86243582f66bfb107db7 (patch) | |
| tree | ce84ec5bfc0c3171d8143bf6d995bc82638aaf4d | |
| parent | 555364c006d24daad0755d949c770f44c47fb614 (diff) | |
Disable smooth-scrolling dependent on the graphics-effect level
If the graphics-effect-level has been set to NoEffects (systemsettings -> Appearance
-> Style -> Fine Tuning), the smooth scrolling in Dolphin will be disabled.
Additionally the duration for the smooth-scrolling has been decreased from 200 ms
to 100 ms to reduce the lag.
A wrong calculation of the end-value has been fixed that might trigger
a wrong position of the content.
BUG: 291740
BUG: 291607
FIXED-IN: 4.8.0
| -rw-r--r-- | src/kitemviews/kitemlistsmoothscroller.cpp | 10 | ||||
| -rw-r--r-- | src/kitemviews/kitemlistwidget.cpp | 4 |
2 files changed, 11 insertions, 3 deletions
diff --git a/src/kitemviews/kitemlistsmoothscroller.cpp b/src/kitemviews/kitemlistsmoothscroller.cpp index d966920cb..80f7f2883 100644 --- a/src/kitemviews/kitemlistsmoothscroller.cpp +++ b/src/kitemviews/kitemlistsmoothscroller.cpp @@ -19,6 +19,7 @@ #include "kitemlistsmoothscroller_p.h" +#include <KGlobalSettings> #include <QEvent> #include <QPropertyAnimation> #include <QScrollBar> @@ -35,7 +36,8 @@ KItemListSmoothScroller::KItemListSmoothScroller(QScrollBar* scrollBar, m_animation(0) { m_animation = new QPropertyAnimation(this); - m_animation->setDuration(200); + const int duration = (KGlobalSettings::graphicEffectsLevel() == KGlobalSettings::NoEffects) ? 1 : 100; + m_animation->setDuration(duration); connect(m_animation, SIGNAL(stateChanged(QAbstractAnimation::State,QAbstractAnimation::State)), this, SLOT(slotAnimationStateChanged(QAbstractAnimation::State,QAbstractAnimation::State))); @@ -100,7 +102,6 @@ void KItemListSmoothScroller::scrollContentsBy(qreal distance) } const qreal endOffset = currentOffset - distance; - if (m_smoothScrolling || animRunning) { qreal startOffset = currentOffset; if (animRunning) { @@ -109,6 +110,11 @@ void KItemListSmoothScroller::scrollContentsBy(qreal distance) // assures that animation proceeds even in cases where new end-offset are triggered // within a very short timeslots. startOffset += (endOffset - currentOffset) * 1000 / (m_animation->duration() * 60); + if (currentOffset < endOffset) { + startOffset = qMin(startOffset, endOffset); + } else { + startOffset = qMax(startOffset, endOffset); + } } m_animation->stop(); diff --git a/src/kitemviews/kitemlistwidget.cpp b/src/kitemviews/kitemlistwidget.cpp index cd2bf4d40..8e6c728f7 100644 --- a/src/kitemviews/kitemlistwidget.cpp +++ b/src/kitemviews/kitemlistwidget.cpp @@ -28,6 +28,7 @@ #include <KDebug> +#include <KGlobalSettings> #include <QApplication> #include <QPainter> #include <QPropertyAnimation> @@ -243,7 +244,8 @@ void KItemListWidget::setHovered(bool hovered) if (!m_hoverAnimation) { m_hoverAnimation = new QPropertyAnimation(this, "hoverOpacity", this); - m_hoverAnimation->setDuration(200); + const int duration = (KGlobalSettings::graphicEffectsLevel() == KGlobalSettings::NoEffects) ? 1 : 200; + m_hoverAnimation->setDuration(duration); connect(m_hoverAnimation, SIGNAL(finished()), this, SLOT(slotHoverAnimationFinished())); } m_hoverAnimation->stop(); |
