From 08380de42cf04aab2128a26bfecd867396232215 Mon Sep 17 00:00:00 2001 From: Mavridis Philippe Date: Mon, 8 Mar 2021 12:11:16 +0200 Subject: 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 --- kpdf/ui/pageview.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'kpdf') 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 ) -- cgit v1.2.1