From c7eeffe390065d28d8e12be15bda01fb1ba03762 Mon Sep 17 00:00:00 2001 From: Peter Klausing Date: Thu, 21 Feb 2019 04:32:16 +0200 Subject: [PATCH] fix issue 913 and rearrange zoom --- src/control/Control.cpp | 14 +++++++------- src/control/zoom/ZoomControl.cpp | 16 +++++++++++----- src/control/zoom/ZoomControl.h | 9 +++++---- src/gui/toolbarMenubar/ToolZoomSlider.cpp | 5 +++-- 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/control/Control.cpp b/src/control/Control.cpp index 76b18e8f..b554bcac 100644 --- a/src/control/Control.cpp +++ b/src/control/Control.cpp @@ -118,8 +118,8 @@ Control::Control(GladeSearchpath* gladeSearchPath) setEmergencyDocument(this->doc); this->zoom = new ZoomControl(); - this->zoom->setZoomStep(this->settings->getZoomStep()); - this->zoom->setZoomStepScroll(this->settings->getZoomStepScroll()); + this->zoom->setZoomStep(this->settings->getZoomStep()/100.0); + this->zoom->setZoomStepScroll(this->settings->getZoomStepScroll()/100.0); this->zoom->setZoom100(this->settings->getDisplayDpi() / 72.0); this->toolHandler = new ToolHandler(this, this, this->settings); @@ -430,7 +430,7 @@ void Control::updatePageNumbers(size_t page, size_t pdfPage) this->win->updatePageNumbers(page, this->doc->getPageCount(), pdfPage); this->sidebar->selectPageNr(page, pdfPage); - this->metadata->storeMetadata(this->doc->getEvMetadataFilename().str(), page, getZoomControl()->getZoom()); + this->metadata->storeMetadata(this->doc->getEvMetadataFilename().str(), page, getZoomControl()->getZoomReal()); int current = this->win->getXournal()->getCurrentPage(); int count = this->doc->getPageCount(); @@ -2121,8 +2121,8 @@ void Control::showSettings() enableAutosave(settings->isAutosaveEnabled()); - this->zoom->setZoomStep(settings->getZoomStep()); - this->zoom->setZoomStepScroll(settings->getZoomStepScroll()); + this->zoom->setZoomStep(settings->getZoomStep()/100.0); + this->zoom->setZoomStepScroll(settings->getZoomStepScroll()/100.0); this->zoom->setZoom100(settings->getDisplayDpi() / 72.0); getWindow()->getXournal()->getTouchHelper()->reload(); @@ -2397,8 +2397,8 @@ bool Control::loadMetadataCallback(MetadataCallbackData* data) delete data; return false; } - - data->ctrl->zoom->setZoom(data->md.zoom); + ZoomControl* zoom = data->ctrl->zoom; + zoom->setZoom(data->md.zoom * zoom->getZoom100()); data->ctrl->scrollHandler->scrollToPage(data->md.page); delete data; diff --git a/src/control/zoom/ZoomControl.cpp b/src/control/zoom/ZoomControl.cpp index fe595a5b..221e11b4 100644 --- a/src/control/zoom/ZoomControl.cpp +++ b/src/control/zoom/ZoomControl.cpp @@ -8,7 +8,6 @@ ZoomControl::ZoomControl() : view(NULL), zoom(1.0), - zoomReal(1.0), lastZoomValue(1.0), zoomFitMode(true), zoom100Value(1.0), @@ -228,6 +227,13 @@ double ZoomControl::getZoom() return this->zoom; } +double ZoomControl::getZoomReal() +{ + XOJ_CHECK_TYPE(ZoomControl); + + return this->zoom / this->zoom100Value; +} + void ZoomControl::setZoom(double zoom) { XOJ_CHECK_TYPE(ZoomControl); @@ -242,8 +248,8 @@ void ZoomControl::setZoom100(double zoom) XOJ_CHECK_TYPE(ZoomControl); this->zoom100Value = zoom; - this->zoomStep = (this->zoomStepReal * zoom)/100.0; - this->zoomStepScroll = (this->zoomStepScrollReal * zoom)/100.0; + setZoomStep(this->zoomStepReal); + setZoomStepScroll(this->zoomStepScrollReal); this->zoomMax = this->zoomMaxReal * zoom; this->zoomMin = this->zoomMinReal * zoom; fireZoomRangeValueChanged(); @@ -322,7 +328,7 @@ void ZoomControl::setZoomStep(double zoomStep) XOJ_CHECK_TYPE(ZoomControl); this->zoomStepReal = zoomStep; - this->zoomStep = (zoomStep * this->zoom100Value)/100.0; + this->zoomStep = zoomStep * this->zoom100Value; } double ZoomControl::getZoomStepScroll() @@ -344,7 +350,7 @@ void ZoomControl::setZoomStepScroll(double zoomStep) XOJ_CHECK_TYPE(ZoomControl); this->zoomStepScrollReal = zoomStep; - this->zoomStepScroll = (zoomStep * this->zoom100Value)/100.0; + this->zoomStepScroll = zoomStep * this->zoom100Value; } double ZoomControl::getZoomMax() diff --git a/src/control/zoom/ZoomControl.h b/src/control/zoom/ZoomControl.h index 925bf256..5fd984d0 100644 --- a/src/control/zoom/ZoomControl.h +++ b/src/control/zoom/ZoomControl.h @@ -68,6 +68,11 @@ public: */ double getZoom(); + /** + * @return real zoom value in percent + */ + double getZoomReal(); + /** * Set the current zoom, does not preserve the current page position. * Use startZoomSequence() / zoomSequnceChange() / endZoomSequence() to preserve position @@ -158,10 +163,6 @@ private: * depends dpi (REAL_PERCENTAGE_VALUE * zoom100Value) */ double zoom; - /** - * Real current Zoom value - */ - double zoomReal; /** * for zoom sequence start zoom value diff --git a/src/gui/toolbarMenubar/ToolZoomSlider.cpp b/src/gui/toolbarMenubar/ToolZoomSlider.cpp index dac1e1eb..6024f04d 100644 --- a/src/gui/toolbarMenubar/ToolZoomSlider.cpp +++ b/src/gui/toolbarMenubar/ToolZoomSlider.cpp @@ -79,7 +79,7 @@ void ToolZoomSlider::zoomChanged() } this->ignoreChange = true; - double slider_range = scaleFunc(this->zoom->getZoom()/this->zoom->getZoom100()); + double slider_range = scaleFunc(this->zoom->getZoomReal()); gtk_range_set_value(GTK_RANGE(this->slider), slider_range); this->ignoreChange = false; } @@ -223,7 +223,8 @@ GtkToolItem* ToolZoomSlider::newItem() gtk_container_add(GTK_CONTAINER(it), this->slider); ignoreChange = true; - gtk_range_set_value(GTK_RANGE(this->slider), this->zoom->getZoom()); + double slider_range = scaleFunc(this->zoom->getZoomReal()); + gtk_range_set_value(GTK_RANGE(this->slider), slider_range); ignoreChange = false; updateScaleMarks();