Bug 400890 - Touching file moves the view port
Summary: Touching file moves the view port
Status: CONFIRMED
Alias: None
Product: okular
Classification: Applications
Component: general (show other bugs)
Version: 1.3.0
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Okular developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-11-09 21:49 UTC by Oliver Sander
Modified: 2018-11-29 20:42 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Oliver Sander 2018-11-09 21:49:51 UTC
The following phenomenon is a minor annoyance when using Okular & LaTeX to construct presentations.  It happens every time.

STEPS TO REPRODUCE
1. Open a multi-page pdf document, not on the first page
2. Go to presentation mode
3. Leave presentation mode (by pressing Esc)
4. Observe that the top of the current page aligns with the top of the viewport.
5. Touch the file

OBSERVED RESULT
The document moves such that the top of the current page is now near the center of the viewport.

EXPECTED RESULT
The document should not move.
Comment 1 David Hurka 2018-11-10 00:48:55 UTC
Reproduced with:
Okular Version: 5.1.2
Operating System: KDE neon 5.13
KDE Plasma Version: 5.14.0
Qt Version: 5.11.1
KDE Frameworks Version: 5.50.0

Happens only with continuous mode on; but with different zooms.
Comment 2 Tobias Deiminger 2018-11-17 09:14:47 UTC
I researched this for a while, and hope I understand what was going on. Basically, your steps to reproduce cause a notifyViewportChanged event (on presentation mode enter) followed by a slotRelayoutPages event (on reload due to touching the file). rePos.enabled is false in both cases, so default coordinates must be calculated, but this calculation is different for the two events. Therefore the document moves.

Could you please try the patch at https://phabricator.kde.org/D16941 and tell if it fixes the problem for you?
Comment 3 Oliver Sander 2018-11-17 20:14:50 UTC
It *almost* fixes the issue.  Now, when I leave presentation mode the top of the viewport is the bottom of the previous page, i.e., I can see the entire grey horizontal stripe between the current page and the previous one.  That is perfectly fine.

However, when I call 'touch' on the file now, the viewport moves up just a few pixels.  I can now see the very bottom of the previous page.

Weirdly enough, I can then scroll up by calling 'touch' repeatedly.  Every 'touch' moves the viewport a little bit upwards.
Comment 4 Oliver Sander 2018-11-17 20:23:56 UTC
Hmm, now I can't reproduce the 'scrolling' part of the previous post anymore... not sure what's happening.
Comment 5 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

Summary:
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 357958, bug 341939

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

https://commits.kde.org/okular/a29e4eaff5889eee632ce93c2e6a313cd9c011a1