diff --git a/lib/documentview/abstractimageview.cpp b/lib/documentview/abstractimageview.cpp --- a/lib/documentview/abstractimageview.cpp +++ b/lib/documentview/abstractimageview.cpp @@ -257,6 +257,7 @@ { d->mZoomToFit = on; if (on) { + d->mZoomToFill = false; setZoom(computeZoomToFit()); } // We do not set zoom to 1 if zoomToFit is off, this is up to the code @@ -269,6 +270,7 @@ { d->mZoomToFill = on; if (on) { + d->mZoomToFit = false; setZoom(computeZoomToFill()); } // We do not set zoom to 1 if zoomToFit is off, this is up to the code diff --git a/lib/documentview/documentview.cpp b/lib/documentview/documentview.cpp --- a/lib/documentview/documentview.cpp +++ b/lib/documentview/documentview.cpp @@ -597,18 +597,22 @@ void DocumentView::setZoomToFit(bool on) { - if (on == d->mAdapter->zoomToFit()) { - return; + Q_UNUSED(on); + const bool zoomToFitOn = d->mAdapter->zoomToFit(); + d->mAdapter->setZoomToFit(!zoomToFitOn); + if (zoomToFitOn) { + d->setZoom(1.); } - d->mAdapter->setZoomToFit(on); } void DocumentView::setZoomToFill(bool on) { - if (on == d->mAdapter->zoomToFill()) { - return; + Q_UNUSED(on); + const bool zoomToFillOn = d->mAdapter->zoomToFill(); + d->mAdapter->setZoomToFill(!zoomToFillOn); + if (zoomToFillOn) { + d->setZoom(1.); } - d->mAdapter->setZoomToFill(on); } bool DocumentView::zoomToFit() const diff --git a/lib/documentview/documentviewcontroller.cpp b/lib/documentview/documentviewcontroller.cpp --- a/lib/documentview/documentviewcontroller.cpp +++ b/lib/documentview/documentviewcontroller.cpp @@ -25,7 +25,6 @@ #include "abstractdocumentviewadapter.h" #include "documentview.h" #include -#include #include #include @@ -189,10 +188,8 @@ connect(d->mView, &DocumentView::zoomToFillChanged, this, &DocumentViewController::updateZoomToFillActionFromView); connect(d->mView, &DocumentView::currentToolChanged, this, &DocumentViewController::updateTool); - connect(d->mZoomToFitAction, SIGNAL(toggled(bool)), - d->mView, SLOT(setZoomToFit(bool))); - connect(d->mZoomToFillAction, SIGNAL(toggled(bool)), - d->mView, SLOT(setZoomToFill(bool))); + connect(d->mZoomToFitAction, &QAction::triggered, d->mView, &DocumentView::setZoomToFit); + connect(d->mZoomToFillAction, &QAction::triggered, d->mView, &DocumentView::setZoomToFill); connect(d->mActualSizeAction, SIGNAL(triggered()), d->mView, SLOT(zoomActualSize())); connect(d->mZoomInAction, SIGNAL(triggered()), @@ -246,13 +243,11 @@ void DocumentViewController::updateZoomToFitActionFromView() { - SignalBlocker blocker(d->mZoomToFitAction); d->mZoomToFitAction->setChecked(d->mView->zoomToFit()); } void DocumentViewController::updateZoomToFillActionFromView() { - SignalBlocker blocker(d->mZoomToFillAction); d->mZoomToFillAction->setChecked(d->mView->zoomToFill()); }