diff options
author | Mavridis Philippe <mavridisf@gmail.com> | 2021-03-08 12:11:16 +0200 |
---|---|---|
committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2021-03-08 23:21:49 +0900 |
commit | 4e99522453068c3d1c6132aeb5a7e1b50d879804 (patch) | |
tree | 87ed446dc5be1aa465433d41404214d307a72723 | |
parent | 60703fc754ca5b28603e6f319be3a877da45b37a (diff) | |
download | tdegraphics-4e99522453068c3d1c6132aeb5a7e1b50d879804.tar.gz tdegraphics-4e99522453068c3d1c6132aeb5a7e1b50d879804.zip |
Some fixes for cover page mode
* 1-page shift is now taken into account for size pages.
Before this change, the last page of a document with an even count of
pages would have zero height and be displayed 'floating' over the page
above it.
* Improved code readability by using a variable to store the result of
the cover page mode check.
Signed-off-by: Mavridis Philippe <mavridisf@gmail.com>
(cherry picked from commit 08380de42cf04aab2128a26bfecd867396232215)
-rw-r--r-- | kpdf/ui/pageview.cpp | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/kpdf/ui/pageview.cpp b/kpdf/ui/pageview.cpp index 8225bf32..97302be4 100644 --- a/kpdf/ui/pageview.cpp +++ b/kpdf/ui/pageview.cpp @@ -1658,6 +1658,7 @@ void PageView::doTypeAheadSearch() void PageView::slotRelayoutPages() // called by: notifySetup, viewportResizeEvent, slotTwoPagesToggled, slotContinuousToggled, updateZoom { + bool coverPageMode = ( KpdfSettings::viewColumns() == 2 && KpdfSettings::viewCoverPage() ); // set an empty container if we have no pages int pageCount = d->items.count(); if ( pageCount < 1 ) @@ -1688,11 +1689,12 @@ void PageView::slotRelayoutPages() { // Here we find out column's width and row's height to compute a table // so we can place widgets 'centered in virtual cells'. - int nCols = KpdfSettings::viewColumns(), - nRows = (int)ceil( (float)pageCount / (float)nCols ), + int pageShift = coverPageMode ? 1 : 0, + nCols = KpdfSettings::viewColumns(), + nRows = (int)ceil( (float)(pageCount + pageShift) / (float)nCols ), * colWidth = new int[ nCols ], * rowHeight = new int[ nRows ], - cIdx = 0, + cIdx = pageShift, rIdx = 0; for ( int i = 0; i < nCols; i++ ) colWidth[ i ] = viewportWidth / nCols; @@ -1722,19 +1724,16 @@ void PageView::slotRelayoutPages() // 2) arrange widgets inside cells int insertX = 0, insertY = 4; // 2 + 4*d->zoomFactor ? - cIdx = 0; + cIdx = pageShift; rIdx = 0; - if( KpdfSettings::viewColumns() == 2 && KpdfSettings::viewCoverPage() ) - ++cIdx; - for ( iIt = d->items.begin(); iIt != iEnd; ++iIt ) { PageViewItem * item = *iIt; int cWidth = colWidth[ cIdx ], rHeight = rowHeight[ rIdx ]; - if( KpdfSettings::viewColumns() == 2 && KpdfSettings::viewCoverPage() && item->pageNumber() == 0 ) // align widget right inside viewport + if( coverPageMode && item->pageNumber() == 0 ) // align widget right inside viewport insertX+=cWidth; // center widget inside 'cells' @@ -1791,7 +1790,7 @@ void PageView::slotRelayoutPages() int insertX = 0; cIdx = 0; - if( KpdfSettings::viewColumns() == 2 && KpdfSettings::viewCoverPage() && (int)d->document->currentPage() == 0 ) + if( coverPageMode && (int)d->document->currentPage() == 0 ) ++cIdx; for ( iIt = d->items.begin(); iIt != iEnd; ++iIt ) |