Commit a321e497 authored by Peter Penz's avatar Peter Penz
Browse files

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
parent 9f711b5f
......@@ -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();
......
......@@ -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();
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment