Skip to content
  • Tobias Deiminger's avatar
    Fix inconsistent viewport positioning in PageView · a29e4eaf
    Tobias Deiminger authored
    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
    a29e4eaf