[LyX/master] Toom value: back to QLabel, this time with custom context menu
Juergen Spitzmueller
spitz at lyx.org
Sun Mar 14 10:59:14 UTC 2021
commit d29d2f48fd2f7ad30c71b716041b49fd09234104
Author: Juergen Spitzmueller <spitz at lyx.org>
Date: Sun Mar 14 12:03:42 2021 +0100
Toom value: back to QLabel, this time with custom context menu
---
src/frontends/qt/GuiView.cpp | 28 +++++++++++++++-------------
src/frontends/qt/GuiView.h | 13 +++++++++++--
2 files changed, 26 insertions(+), 15 deletions(-)
diff --git a/src/frontends/qt/GuiView.cpp b/src/frontends/qt/GuiView.cpp
index 451b292..f392efe 100644
--- a/src/frontends/qt/GuiView.cpp
+++ b/src/frontends/qt/GuiView.cpp
@@ -672,29 +672,29 @@ GuiView::GuiView(int id)
connect(zoom_in_, SIGNAL(clicked()), this, SLOT(zoomInPressed()));
connect(zoom_out_, SIGNAL(clicked()), this, SLOT(zoomOutPressed()));
- zoom_value_ = new QToolButton(statusBar());
- zoom_value_->setToolButtonStyle(Qt::ToolButtonTextOnly);
- zoom_value_->setAutoRaise(true);
- zoom_value_->setPopupMode(QToolButton::InstantPopup);
+ zoom_value_ = new QLabel(statusBar());
zoom_value_->setFixedHeight(fm.height());
- // Get sensible minimum width to heep the size constant
- zoom_value_->setText(toqstr("000%"));
- int const mw = zoom_value_->width();
- zoom_value_->setMinimumWidth(mw);
+#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0))
+ zoom_value_->setMinimumWidth(fm.horizontalAdvance("000%"));
+#else
+ zoom_value_->setMinimumWidth(fm.width("000%"));
+#endif
+ zoom_value_->setText(toqstr(bformat(_("[[ZOOM]]%1$d%"), zoom)));
statusBar()->addPermanentWidget(zoom_value_);
zoom_value_->setEnabled(currentBufferView());
+ zoom_value_->setContextMenuPolicy(Qt::CustomContextMenu);
+ ZoomMenu * zoom_menu = new ZoomMenu(statusBar());
act_zoom_default_ = new QAction(toqstr(bformat(_("&Reset to default (%1$d%)"),
lyxrc.defaultZoom)), this);
act_zoom_in_ = new QAction(qt_("Zoom &in"), this);
act_zoom_out_ = new QAction(qt_("Zoom &out"), this);
act_zoom_show_ = new QAction(qt_("Show zoom slider"), this);
act_zoom_show_->setCheckable(true);
- zoom_value_->addAction(act_zoom_default_);
- zoom_value_->addAction(act_zoom_in_);
- zoom_value_->addAction(act_zoom_out_);
- zoom_value_->addAction(act_zoom_show_);
- zoom_value_->setText(toqstr(bformat(_("[[ZOOM]]%1$d%"), zoom)));
+ zoom_menu->addAction(act_zoom_default_);
+ zoom_menu->addAction(act_zoom_in_);
+ zoom_menu->addAction(act_zoom_out_);
+ zoom_menu->addAction(act_zoom_show_);
enableZoomOptions();
connect(act_zoom_default_, SIGNAL(triggered()),
this, SLOT(resetDefaultZoom()));
@@ -704,6 +704,8 @@ GuiView::GuiView(int id)
this, SLOT(zoomOutPressed()));
connect(act_zoom_show_, SIGNAL(triggered()),
this, SLOT(toogleZoomSlider()));
+ connect(zoom_value_, SIGNAL(customContextMenuRequested(QPoint)),
+ zoom_menu, SLOT(showMenu(QPoint)));
int const iconheight = max(int(d.normalIconSize), fm.height());
QSize const iconsize(iconheight, iconheight);
diff --git a/src/frontends/qt/GuiView.h b/src/frontends/qt/GuiView.h
index 849718d..eda1f5a 100644
--- a/src/frontends/qt/GuiView.h
+++ b/src/frontends/qt/GuiView.h
@@ -29,7 +29,6 @@ class QPushButton;
class QLabel;
class QShowEvent;
class QSlider;
-class QToolButton;
namespace lyx {
@@ -507,7 +506,7 @@ private:
/// Statusbar widget that shows version control status
QLabel * version_control_;
/// Statusbar widget that shows zoom value
- QToolButton * zoom_value_;
+ QLabel * zoom_value_;
/// The zoom slider widget
QSlider * zoom_slider_;
/// Zoom in ("+") Button
@@ -547,6 +546,16 @@ public Q_SLOTS:
void showMenu(QPoint const &) { exec(QCursor::pos()); }
};
+class ZoomMenu : public QMenu
+{
+ Q_OBJECT
+public:
+ explicit ZoomMenu(QWidget *) {};
+
+public Q_SLOTS:
+ void showMenu(QPoint const &) { exec(QCursor::pos()); }
+};
+
} // namespace frontend
} // namespace lyx
More information about the lyx-cvs
mailing list