Fix inconsistent viewport positioning in PageView

Authored by tobiasdeiminger on Nov 22 2018, 5:50 PM.

Description

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.

BUGS: 357958
CCBUG: 341939
CCBUG: 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

Details

Committed
tobiasdeimingerNov 29 2018, 8:41 PM
Reviewer
sander
Differential Revision
D16941: Fix inconsistent viewport positioning in PageView
Parents
R223:b04a2daa6bd8: Fix DjVu links pointing to pages with different dimensions
Branches
Unknown
Tags
Unknown
References
tag: v18.11.90