Summary: | Touching file moves the view port | ||
---|---|---|---|
Product: | [Applications] okular | Reporter: | Oliver Sander <oliver.sander> |
Component: | general | Assignee: | Okular developers <okular-devel> |
Status: | CONFIRMED --- | ||
Severity: | normal | CC: | haxtibal, nate |
Priority: | NOR | ||
Version: | 1.3.0 | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: |
Description
Oliver Sander
2018-11-09 21:49:51 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. 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? 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. Hmm, now I can't reproduce the 'scrolling' part of the previous post anymore... not sure what's happening. 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 |