summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMavridis Philippe <mavridisf@gmail.com>2021-03-08 12:11:16 +0200
committerMavridis Philippe <mavridisf@gmail.com>2021-03-08 16:03:37 +0200
commit08380de42cf04aab2128a26bfecd867396232215 (patch)
tree7db02760481ccd3bdb0345c8c72a81e5f68598f2
parentea41cd36fbae8bfbb8f26d76c66c3c301cedc60e (diff)
downloadtdegraphics-08380de42cf04aab2128a26bfecd867396232215.tar.gz
tdegraphics-08380de42cf04aab2128a26bfecd867396232215.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>
-rw-r--r--kpdf/ui/pageview.cpp17
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 )