diff --git a/conf/dlggeneralbase.ui b/conf/dlggeneralbase.ui
index 482c25a0f..e7ea4a4e3 100644
--- a/conf/dlggeneralbase.ui
+++ b/conf/dlggeneralbase.ui
@@ -64,6 +64,13 @@
0
+ -
+
+
+ Use smooth scrolling
+
+
+
-
diff --git a/conf/okular.kcfg b/conf/okular.kcfg
index b68991df3..b15c1ade2 100644
--- a/conf/okular.kcfg
+++ b/conf/okular.kcfg
@@ -286,6 +286,9 @@
0
+
+ true
+
true
diff --git a/doc/index.docbook b/doc/index.docbook
index 70996f35c..214ae2ccc 100644
--- a/doc/index.docbook
+++ b/doc/index.docbook
@@ -2482,6 +2482,12 @@ Context menu actions like Rename Bookmarks etc.)
General
+
+ Use smooth scrolling
+
+ Whether to display animated transitions when scrolling using the mouse wheel and keyboard.
+
+
Show scrollbars
diff --git a/ui/pageview.cpp b/ui/pageview.cpp
index 300c9444d..fc848f4f9 100644
--- a/ui/pageview.cpp
+++ b/ui/pageview.cpp
@@ -451,7 +451,6 @@ PageView::PageView(QWidget *parent, Okular::Document *document)
PageView::updateSmoothScrollAnimationSpeed();
}
});
- PageView::updateSmoothScrollAnimationSpeed();
// connect the padding of the viewport to pixmaps requests
connect(horizontalScrollBar(), &QAbstractSlider::valueChanged, this, &PageView::slotRequestVisiblePixmaps);
@@ -871,6 +870,9 @@ void PageView::displayMessage(const QString &message, const QString &details, Pa
void PageView::reparseConfig()
{
+ // set smooth scrolling policies
+ PageView::updateSmoothScrollAnimationSpeed();
+
// set the scroll bars policies
Qt::ScrollBarPolicy scrollBarMode = Okular::Settings::showScrollBars() ? Qt::ScrollBarAsNeeded : Qt::ScrollBarAlwaysOff;
if (horizontalScrollBarPolicy() != scrollBarMode) {
@@ -4188,6 +4190,16 @@ void PageView::addSearchWithinDocumentAction(QMenu *menu, const QString &searchT
void PageView::updateSmoothScrollAnimationSpeed()
{
+ // If it's turned off in Okular's own settings, don't bother to look at the
+ // global settings
+ if (!Okular::Settings::smoothScrolling()) {
+ d->currentShortScrollDuration = 0;
+ d->currentLongScrollDuration = 0;
+ return;
+ }
+
+ // If we are using smooth scrolling, scale the speed of the animated
+ // transitions according to the global animation speed setting
KConfigGroup kdeglobalsConfig = KConfigGroup(KSharedConfig::openConfig(), QStringLiteral("KDE"));
const qreal globalAnimationScale = qMax(0.0, kdeglobalsConfig.readEntry("AnimationDurationFactor", 1.0));
d->currentShortScrollDuration = d->baseShortScrollDuration * globalAnimationScale;