Add option to disable smooth scrolling

Even though the animated smooth scrolling transitions are now affected
by the global animation speed setting in Plasma, this is not totally
satisfactory for the full pool of people who hate smooth scrolling, as
it does not address the cases of people using Okular outside of Plasma
or people who generally want animations but just not in Okular's
scrolling implementation.

Accordingly, there is now a GUI option to disable smooth scrolling in
Okular's settings window.

BUG: 420755
FIXED-IN: 20.12
remotes/origin/work/aacid/shorcutslost_2008
Nate Graham 6 years ago
parent ceb8cf629d
commit 122528d3fe
  1. 7
      conf/dlggeneralbase.ui
  2. 3
      conf/okular.kcfg
  3. 6
      doc/index.docbook
  4. 14
      ui/pageview.cpp

@ -64,6 +64,13 @@
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QCheckBox" name="kcfg_SmoothScrolling">
<property name="text">
<string>Use smooth scrolling</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="kcfg_ShowScrollBars">
<property name="text">

@ -286,6 +286,9 @@
<entry key="EditToolBarPlacement" type="Int" >
<default>0</default>
</entry>
<entry key="SmoothScrolling" type="Bool" >
<default>true</default>
</entry>
<entry key="ShowScrollBars" type="Bool" >
<default>true</default>
</entry>

@ -2482,6 +2482,12 @@ Context menu actions like Rename Bookmarks etc.)
<sect1 id="configgeneral">
<title>General</title>
<variablelist>
<varlistentry>
<term><guilabel>Use smooth scrolling</guilabel></term>
<listitem>
<para>Whether to display animated transitions when scrolling using the mouse wheel and keyboard.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><guilabel>Show scrollbars</guilabel></term>
<listitem>

@ -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;

Loading…
Cancel
Save