commit d29d2f48fd2f7ad30c71b716041b49fd09234104
Author: Juergen Spitzmueller <[email protected]>
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
 
-- 
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to