[LyX/master] Add +/- buttons to zoom slider

Juergen Spitzmueller spitz at lyx.org
Tue Mar 9 07:37:28 UTC 2021


commit ebb7ee7d5f8a5aea29142ffc794617e34ee13fb8
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Tue Mar 9 08:42:27 2021 +0100

    Add +/- buttons to zoom slider
---
 src/frontends/qt/GuiView.cpp |   35 +++++++++++++++++++++++++++++++++++
 src/frontends/qt/GuiView.h   |    9 +++++++++
 2 files changed, 44 insertions(+), 0 deletions(-)

diff --git a/src/frontends/qt/GuiView.cpp b/src/frontends/qt/GuiView.cpp
index fb9681b..1db9bbb 100644
--- a/src/frontends/qt/GuiView.cpp
+++ b/src/frontends/qt/GuiView.cpp
@@ -650,12 +650,29 @@ GuiView::GuiView(int id)
 	zoom_slider_->setToolTip(qt_("Workarea zoom level. Drag, use Ctrl-+/- or Shift-Mousewheel to adjust."));
 	zoom_slider_->setTickPosition(QSlider::TicksBelow);
 	zoom_slider_->setTickInterval(lyxrc.defaultZoom - 10);
+
+	// Buttons to change zoom stepwise
+	zoom_in_ = new QPushButton(statusBar());
+	zoom_in_->setText("+");
+	zoom_in_->setFlat(true);
+	zoom_in_->setFixedSize(QSize(fm.height(), fm.height()));
+	zoom_out_ = new QPushButton(statusBar());
+	zoom_out_->setText("-");
+	zoom_out_->setFixedSize(QSize(fm.height(), fm.height()));
+	zoom_out_->setFlat(true);
+
+	statusBar()->addPermanentWidget(zoom_out_);
+	zoom_out_->setEnabled(currentBufferView());
 	statusBar()->addPermanentWidget(zoom_slider_);
 	zoom_slider_->setEnabled(currentBufferView());
+	zoom_out_->setEnabled(currentBufferView());
+	statusBar()->addPermanentWidget(zoom_in_);
 
 	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()));
 
 	zoom_value_ = new QLabel(statusBar());
 	zoom_value_->setText(toqstr(bformat(_("[[ZOOM]]%1$d%"), zoom)));
@@ -782,6 +799,22 @@ void GuiView::zoomValueChanged(int value)
 }
 
 
+void GuiView::zoomInPressed()
+{
+	DispatchResult dr;
+	dispatch(FuncRequest(LFUN_BUFFER_ZOOM_IN), dr);
+	currentWorkArea()->scheduleRedraw(true);
+}
+
+
+void GuiView::zoomOutPressed()
+{
+	DispatchResult dr;
+	dispatch(FuncRequest(LFUN_BUFFER_ZOOM_OUT), dr);
+	currentWorkArea()->scheduleRedraw(true);
+}
+
+
 QVector<GuiWorkArea*> GuiView::GuiViewPrivate::guiWorkAreas()
 {
 	QVector<GuiWorkArea*> areas;
@@ -1369,6 +1402,8 @@ void GuiView::onBufferViewChanged()
 	updateDialogs();
 	zoom_slider_->setEnabled(currentBufferView());
 	zoom_value_->setEnabled(currentBufferView());
+	zoom_in_->setEnabled(currentBufferView());
+	zoom_out_->setEnabled(currentBufferView());
 }
 
 
diff --git a/src/frontends/qt/GuiView.h b/src/frontends/qt/GuiView.h
index 7c876f4..728ed0d 100644
--- a/src/frontends/qt/GuiView.h
+++ b/src/frontends/qt/GuiView.h
@@ -25,6 +25,7 @@
 class QCloseEvent;
 class QDragEnterEvent;
 class QDropEvent;
+class QPushButton;
 class QLabel;
 class QShowEvent;
 class QSlider;
@@ -248,6 +249,10 @@ private Q_SLOTS:
 	///
 	void zoomValueChanged(int);
 	///
+	void zoomInPressed();
+	///
+	void zoomOutPressed();
+	///
 	void on_currentWorkAreaChanged(GuiWorkArea *);
 	///
 	void onBufferViewChanged();
@@ -498,6 +503,10 @@ private:
 	QLabel * zoom_value_;
 	/// The zoom slider widget
 	QSlider * zoom_slider_;
+	/// Zoom in ("+") Button
+	QPushButton * zoom_in_;
+	/// Zoom out ("-") Button
+	QPushButton * zoom_out_;
 
 	/// The rate from which the actual zoom value is calculated
 	/// from the default zoom pref


More information about the lyx-cvs mailing list