X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/f510339f033658eae27f8400bf042b78b36f82f2..cebcf8db:/src/kitemviews/private/kitemlistsmoothscroller.cpp diff --git a/src/kitemviews/private/kitemlistsmoothscroller.cpp b/src/kitemviews/private/kitemlistsmoothscroller.cpp index 3e325b934..fd26d198f 100644 --- a/src/kitemviews/private/kitemlistsmoothscroller.cpp +++ b/src/kitemviews/private/kitemlistsmoothscroller.cpp @@ -6,7 +6,11 @@ #include "kitemlistsmoothscroller.h" +#include +#include + #include +#include #include #include #include @@ -20,9 +24,17 @@ KItemListSmoothScroller::KItemListSmoothScroller(QScrollBar *scrollBar, QObject , m_animation(nullptr) { m_animation = new QPropertyAnimation(this); - const int animationDuration = m_scrollBar->style()->styleHint(QStyle::SH_Widget_Animation_Duration, nullptr, m_scrollBar); - const bool animationEnabled = (animationDuration > 0); - m_animation->setDuration(animationEnabled ? animationDuration : 1); + + KSharedConfig::Ptr globalConfig = KSharedConfig::openConfig(QStringLiteral("kdeglobals"), KConfig::IncludeGlobals); + KConfigGroup configGroup(globalConfig, QStringLiteral("KDE")); + updateAnimationDuration(configGroup.readEntry("SmoothScroll", true)); + + QDBusConnection::sessionBus().connect(QStringLiteral(""), + QStringLiteral("/SmoothScroll"), + QStringLiteral("org.kde.SmoothScroll"), + QStringLiteral("notifyChange"), + this, + SLOT(updateAnimationDuration(bool))); connect(m_animation, &QPropertyAnimation::stateChanged, this, &KItemListSmoothScroller::slotAnimationStateChanged); m_scrollBar->installEventFilter(this); @@ -177,21 +189,27 @@ void KItemListSmoothScroller::slotAnimationStateChanged(QAbstractAnimation::Stat } } +void KItemListSmoothScroller::updateAnimationDuration(bool isSmoothScrollingEnabled) +{ + if (isSmoothScrollingEnabled) { + // Breeze sets SH_Widget_Animation_Duration from the KDE global animation speed setting + const int animationDuration = m_scrollBar->style()->styleHint(QStyle::SH_Widget_Animation_Duration, nullptr, m_scrollBar); + const bool animationEnabled = (animationDuration > 0); + m_animation->setDuration(animationEnabled ? animationDuration : 1); + } else { + m_animation->setDuration(1); + } +} + void KItemListSmoothScroller::handleWheelEvent(QWheelEvent *event) { const bool previous = m_smoothScrolling; m_smoothScrolling = true; -#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) QWheelEvent *copy = event->clone(); QApplication::sendEvent(m_scrollBar, copy); event->setAccepted(copy->isAccepted()); -#else - QWheelEvent copy = *event; - QApplication::sendEvent(m_scrollBar, ©); - event->setAccepted(copy.isAccepted()); -#endif m_smoothScrolling = previous; }