Bug 191859 - page view cannot handle a lot of pages (max widget size)
Summary: page view cannot handle a lot of pages (max widget size)
Status: RESOLVED FIXED
Alias: None
Product: okular
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR normal
Target Milestone: ---
Assignee: Okular developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-05-07 00:16 UTC by Francesco Riosa
Modified: 2009-06-29 22:55 UTC (History)
0 users

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 Francesco Riosa 2009-05-07 00:16:11 UTC
Version:            (using Devel)
Compiler:          gcc-4.3.3 
OS:                Linux
Installed from:    Compiled sources

On very long documents > 10000 pages okular let browse the document only around 10000, then:

1) the page-counter show only the first 4 ciphers

2) with page zoom (1 page on monitor)
- it show only a little piece of page 10370, the counter show 1036
- the total page count as shown by okular is 10606
- `okular -p 10600 a2-2009.03.21.a4.pdf` opens at 1019X instead

3) with zoom at 100% (2 pages side by side)
- ok it reach the end of the document

4) with zoom at 400% it stop at page 9927

the document in question is GPLed and downloadable @

http://cherokee.mirror.garr.it/mirrors/appuntilinux/2009.03.21.00.00/a2-2009.03.21.a4.pdf

P.S. the scroll bar sees the end at 10370 too
Comment 1 Pino Toscano 2009-05-07 01:00:39 UTC
SVN commit 964588 by pino:

do not hardcode the maximum number of digits of the pages line edit to 4
actually, do not hardcode it at all, as the validator will do the job just fine
CCBUG: 191859


 M  +0 -1      minibar.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=964588
Comment 2 Pino Toscano 2009-05-07 01:02:34 UTC
SVN commit 964592 by pino:

backport:
do not hardcode the maximum number of digits of the pages line edit to 4
actually, do not hardcode it at all, as the validator will do the job just fine
CCBUG: 191859


 M  +0 -1      minibar.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=964592
Comment 3 Pino Toscano 2009-05-07 01:12:32 UTC
> 1) the page-counter show only the first 4 ciphers
> 
> 2) with page zoom (1 page on monitor)
> - it show only a little piece of page 10370, the counter show 1036

Page line edit fixed for KDE 4.2.4 (and greater).

The other issues are caused by the very same cause: the internal widget used for showing the contents has a maximum size that most of the page layouts for this document can exceed. Updating the title to reflect this.

The proper fix would be not using a widget but painting directly on the viewport. Not trivial, so it won't be in KDE 4.3 (too much risk of breaking the page view at this point).
Comment 4 Pino Toscano 2009-05-07 01:17:20 UTC
(... and forgot to confirm it.)
Comment 5 Francesco Riosa 2009-05-07 14:28:50 UTC
Used the patch atop of okular in 4.2.71, it work fine.
Great answer time Pino, looking for the Guinness?
Thanks
Comment 6 Pino Toscano 2009-06-29 22:55:52 UTC
SVN commit 989285 by pino:

Convert the PageView from a QScrollArea + inner QWidget to a QAbstractScrollArea.
- added few utility functions to compensate the miss of a "central scrolled widget", as now we just fully handle (events & painting) the viewport of the scroll area
- manually scroll the overlay widgets (form widgets and video widgets) when the "area" is scrolled
All the page view functionalities should be working as usual, hopefully I should have ported everything (in case it will be fixed later).
Given that now the size page view is no more constrained by the maximum size of a QWidget (which is two orders of magnitude less than the size of an int), we can handle documents with really many pages (10k+) with hopefully no issues.
BUG: 191859
As a side effect of the QScrollArea -> QAbstractScrollArea porting, it seems that there are no more drawing glitches when in right-to-left mode.
BUG: 192636


 M  +1 -1      part.cpp  
 M  +180 -158  ui/pageview.cpp  
 M  +16 -10    ui/pageview.h  
 M  +6 -4      ui/pageviewannotator.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=989285