diff --git a/autotests/parttest.cpp b/autotests/parttest.cpp index 5e903105b..d07a0e4e8 100644 --- a/autotests/parttest.cpp +++ b/autotests/parttest.cpp @@ -101,6 +101,7 @@ class PartTest void testOpenPrintPreview(); void testMouseModeMenu(); void testFullScreenRequest(); + void testZoomInFacingPages(); private: void simulateMouseSelection(double startX, double startY, double endX, double endY, QWidget *target); @@ -2020,6 +2021,29 @@ void PartTest::testFullScreenRequest() QTRY_VERIFY( part.m_presentationWidget ); } +void PartTest::testZoomInFacingPages() +{ + QVariantList dummyArgs; + Okular::Part part(nullptr, nullptr, dummyArgs); + QVERIFY(openDocument(&part, QStringLiteral(KDESRCDIR "data/file2.pdf"))); + QAction *facingAction = part.m_pageView->findChild(QStringLiteral("view_render_mode_facing")); + KSelectAction *zoomSelectAction = part.m_pageView->findChild(QStringLiteral("zoom_to")); + part.widget()->resize(600, 400); + part.widget()->show(); + QVERIFY(QTest::qWaitForWindowExposed(part.widget())); + facingAction->trigger(); + while (zoomSelectAction->currentText() != "12%") { + QVERIFY(QMetaObject::invokeMethod(part.m_pageView, "slotZoomOut")); + } + QTRY_VERIFY( part.m_document->page( 0 )->hasPixmap( part.m_pageView ) ); + QVERIFY(QMetaObject::invokeMethod(part.m_pageView, "slotZoomIn")); + QVERIFY(QMetaObject::invokeMethod(part.m_pageView, "slotZoomIn")); + QVERIFY(QMetaObject::invokeMethod(part.m_pageView, "slotZoomIn")); + QVERIFY(QMetaObject::invokeMethod(part.m_pageView, "slotZoomIn")); + QVERIFY(QMetaObject::invokeMethod(part.m_pageView, "slotZoomIn")); + QTRY_COMPARE(zoomSelectAction->currentText(), QStringLiteral("66%")); +} + } // namespace Okular int main(int argc, char *argv[]) diff --git a/ui/pageview.cpp b/ui/pageview.cpp index 7318e9603..d4bafb4fc 100644 --- a/ui/pageview.cpp +++ b/ui/pageview.cpp @@ -4070,7 +4070,7 @@ double PageView::zoomFactorFitMode( ZoomMode mode ) const bool facingCentered = Okular::Settings::viewMode() == Okular::Settings::EnumViewMode::FacingFirstCentered || (Okular::Settings::viewMode() == Okular::Settings::EnumViewMode::Facing && pageCount == 1); const bool overrideCentering = facingCentered && pageCount < 3; const int nCols = overrideCentering ? 1 : viewColumns(); - const double colWidth = viewport()->width() / static_cast(nCols) - kcolWidthMargin; + const int colWidth = viewport()->width() / nCols - kcolWidthMargin; const double rowHeight = viewport()->height() - krowHeightMargin; const PageViewItem * currentItem = d->items[ qMax( 0, (int)d->document->currentPage()) ]; // prevent segmentation fault when opening a new document;