Bug 357958 - Viewport is selected inconsistently when navigating with left/right arrow keys
Summary: Viewport is selected inconsistently when navigating with left/right arrow keys
Alias: None
Product: okular
Classification: Applications
Component: general (show other bugs)
Version: 0.20.3
Platform: Gentoo Packages Linux
: NOR normal
Target Milestone: ---
Assignee: Okular developers
Keywords: triaged
Depends on:
Reported: 2016-01-14 01:16 UTC by Pastafarianist
Modified: 2018-11-29 20:49 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In: 18.12.0

Example screenshot (432.14 KB, image/png)
2016-01-14 13:28 UTC, Pastafarianist

Note You need to log in before you can comment on or make changes to this bug.
Description Pastafarianist 2016-01-14 01:16:41 UTC
Navigating with arrow keys aligns breaks between pages with the center of the screen instead of aligning pages themselves.

Reproducible: Sometimes

Steps to Reproduce:
1. Open a PDF file (reproducible with identical A4 pages, untested with others)
2. Enable two-page view mode (reproducible in the mode where the 1st page is paired with the 2nd, 3rd with 4th etc)
3. Enable scaling where pages are adjusted to fit by height
4. Navigate somewhere to the middle of the document by dragging the scrollbar / using the mouse wheel.
5. Press left or right arrow key.

Actual Results:  
Sometimes, instead of fitting pages in the viewport, the break between two adjacent pairs of pages is aligned with the center of the screen.

Expected Results:  
Each time an arrow key is pressed, it works like page up/down, and also aligns the next pair of pages with the top and bottom edges of the viewport (so that the pages fit in the viewport entirely, while the next and previous pair aren't visible).
Comment 1 Pastafarianist 2016-01-14 13:28:45 UTC
Created attachment 96634 [details]
Example screenshot

Here is what I am talking about. I was reading pages 7-8, then pressed right arrow and instead of showing only pages 9-10, Okular displayed this.
Comment 2 Blase Johnson 2018-11-17 19:37:26 UTC
(Bugsquad) I tried scrolling large documents using the arrow keys, using facing pages view and various zoom settings, but in all cases scrolling using either the left or right arrow key causes the line break with the previous pages to align with the top of the view, and the position does not change with multiple scrolls.

Application Version: 1.5.3
KDE Plasma Version: 5.14.3
KDE Frameworks Version: 5.52.0
Qt Version: 5.11.2
Comment 3 Tobias Deiminger 2018-11-17 19:58:37 UTC
I could reproduce the described behavior while working on bug 400890. It has actually the same root cause, and should be fixed with https://phabricator.kde.org/D16941. Testing welcome.

(shall we reopen for the meantime?)
Comment 4 Tobias Deiminger 2018-11-29 20:42:14 UTC
Git commit a29e4eaff5889eee632ce93c2e6a313cd9c011a1 by Tobias Deiminger.
Committed on 29/11/2018 at 20:41.
Pushed by tobiasdeiminger into branch 'Applications/18.12'.

Fix inconsistent viewport positioning in PageView

This diff unifies the calculation of the viewport position from a given DocumentViewport. PageView::notifyViewportChanged and PageView::slotRelayoutPages used to handle it differntly, which resulted in viewport jumps for no reason.

It happened in various situations, e.g. when jumping to a page using the footer page navigation, or when reloading the document after presentation mode left, or when resizing the main window after presentation mode left.

The diff selects the notifyViewportChanged way (align viewport top border with page top margin) as golden behavior in case of rePos.enabled == false.
Related: bug 341939, bug 400890

341939 and 400890 are fixed partially. These two still suffer from a minor displacement that happens when finished signal arrives from pixmap generation thread.

Test Plan:
- When using the footer page navigation to jump to different pages, new page top is always algined with viewport top.
- After changing page with footer page navigation, press F5 to reload. Page top stays aligned with viewport top.
- When exiting presentation mode, and touching the file, page top stays aligned with viewport top.
- When exiting presentation mode, and changing main window size, page top stays aligned with viewport top.

Reviewers: #okular, sander

Reviewed By: sander

Subscribers: ngraham, sander, aacid, okular-devel

Tags: #okular

Differential Revision: https://phabricator.kde.org/D16941

A  +-    --    autotests/data/simple-multipage.pdf
A  +82   -0    autotests/data/simple-multipage.tex
M  +30   -0    autotests/parttest.cpp
M  +37   -30   ui/pageview.cpp
M  +1    -0    ui/pageview.h