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;