[LyX/master] Change zoom from an lfun without going through the slider

Pavel Sanda <[email protected]> Wed, 10 Jun 2026 21:41:25 +0000
Newsgroups gmane.editors.lyx.cvs
Message-ID <[email protected]>
commit 51fe34f90f4eb28dbefd6a1e4eb616da60c74b6c
Author: Guillaume MM <[email protected]>
Date:   Sun Jun 7 03:55:15 2026 +0200

    Change zoom from an lfun without going through the slider
    
    If we change zoom from an lfun directly, we set the value of the slider by
    blocking signals. This prevents the slider from rounding our new zoom value.
    
    This fixes zoom-out not being inverse to zoom-in.
---
 src/frontends/qt/GuiView.cpp | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/frontends/qt/GuiView.cpp b/src/frontends/qt/GuiView.cpp
index 3edfdc29f8..aab3394c60 100644
--- a/src/frontends/qt/GuiView.cpp
+++ b/src/frontends/qt/GuiView.cpp
@@ -718,7 +718,6 @@ GuiView::GuiView(int id)
 
 	connect(zoom_slider_, SIGNAL(sliderMoved(int)), this, SLOT(zoomSliderMoved(int)));
 	connect(zoom_slider_, SIGNAL(valueChanged(int)), this, SLOT(zoomValueChanged(int)));
-	connect(this, SIGNAL(currentZoomChanged(int)), zoom_slider_, SLOT(setValue(int)));
 	connect(zoom_in_, SIGNAL(clicked()), this, SLOT(zoomInPressed()));
 	connect(zoom_out_, SIGNAL(clicked()), this, SLOT(zoomOutPressed()));
 
@@ -1024,9 +1023,11 @@ void GuiView::saveUISettings() const
 
 void GuiView::setCurrentZoom(const int v)
 {
-	// Avoid (only theoretical) recursive call
-	if (zoom_slider_->value() != v)
-		Q_EMIT currentZoomChanged(v);
+	{
+		// Avoid recursive call
+		const QSignalBlocker blocker(zoom_slider_);
+		zoom_slider_->setValue(v);
+	}
 	lyxrc.currentZoom = v;
 	zoom_value_->setText(toqstr(bformat(_("[[ZOOM]]%1$d%"), v)));
 	zoom_in_->setEnabled(currentBufferView() && v < zoom_slider_->maximum());
-- 
lyx-cvs mailing list
[email protected]
https://lists.lyx.org/mailman/listinfo/lyx-cvs