commit eae56b1194c8bed38bf0751ca9cb4eac76ee54c7
Author: Daniel Ramoeller <[email protected]>
Date:   Tue Nov 2 09:12:03 2021 +0100

    Hide the zoom in the status bar from the status bar context menu
    
    Fix for #12420.
---
 lib/ui/stdcontext.inc        |    5 +++--
 src/frontends/qt/GuiView.cpp |   16 ++++++++++++----
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/lib/ui/stdcontext.inc b/lib/ui/stdcontext.inc
index 83e6d9a..8b67cf0 100644
--- a/lib/ui/stdcontext.inc
+++ b/lib/ui/stdcontext.inc
@@ -724,11 +724,12 @@ Menuset
        End
 
 #
-# Zoom context menu
+# Status bar context menu
 #
-       Menu "context-zoom"
+       Menu "context-statusbar"
                ZoomOptions
                Separator
+               Item "Show Zoom|Z" "ui-toggle zoom"
                Item "Show Zoom Slider|S" "ui-toggle zoomslider"
        End
 
diff --git a/src/frontends/qt/GuiView.cpp b/src/frontends/qt/GuiView.cpp
index 1101b89..b7a60fa 100644
--- a/src/frontends/qt/GuiView.cpp
+++ b/src/frontends/qt/GuiView.cpp
@@ -690,9 +690,9 @@ GuiView::GuiView(int id)
        zoom_value_->setText(toqstr(bformat(_("[[ZOOM]]%1$d%"), zoom)));
        statusBar()->addPermanentWidget(zoom_value_);
        zoom_value_->setEnabled(currentBufferView());
-       zoom_value_->setContextMenuPolicy(Qt::CustomContextMenu);
 
-       connect(zoom_value_, SIGNAL(customContextMenuRequested(QPoint)),
+       statusBar()->setContextMenuPolicy(Qt::CustomContextMenu);
+       connect(statusBar(), SIGNAL(customContextMenuRequested(QPoint)),
                this, SLOT(showZoomContextMenu()));
 
        int const iconheight = max(int(d.normalIconSize), fm.height());
@@ -826,7 +826,7 @@ void GuiView::zoomOutPressed()
 
 void GuiView::showZoomContextMenu()
 {
-       QMenu * menu = guiApp->menus().menu(toqstr("context-zoom"), * this);
+       QMenu * menu = guiApp->menus().menu(toqstr("context-statusbar"), * 
this);
        if (!menu)
                return;
        menu->exec(QCursor::pos());
@@ -946,6 +946,7 @@ void GuiView::saveLayout() const
                settings.setValue("geometry", saveGeometry());
        settings.setValue("layout", saveState(0));
        settings.setValue("icon_size", toqstr(d.iconSize(iconSize())));
+       settings.setValue("zoom_value_visible", zoom_value_->isVisible());
        settings.setValue("zoom_slider_visible", zoom_slider_->isVisible());
 }
 
@@ -990,6 +991,8 @@ bool GuiView::restoreLayout()
        //code below is skipped when when ~/.config/LyX is (re)created
        setIconSize(d.iconSize(settings.value(icon_key).toString()));
 
+       zoom_value_->setVisible(settings.value("zoom_value_visible", 
true).toBool());
+
        bool const show_zoom_slider = settings.value("zoom_slider_visible", 
true).toBool();
        zoom_slider_->setVisible(show_zoom_slider);
        zoom_in_->setVisible(show_zoom_slider);
@@ -2352,7 +2355,10 @@ bool GuiView::getStatus(FuncRequest const & cmd, 
FuncStatus & flag)
                break;
 
        case LFUN_UI_TOGGLE:
-               if (cmd.argument() == "zoomslider") {
+               if (cmd.argument() == "zoom") {
+                       enable = doc_buffer;
+                       flag.setOnOff(zoom_value_ ? zoom_value_->isVisible() : 
false);
+               } else if (cmd.argument() == "zoomslider") {
                        enable = doc_buffer;
                        flag.setOnOff(zoom_slider_ ? zoom_slider_->isVisible() 
: false);
                } else
@@ -4861,6 +4867,8 @@ bool GuiView::lfunUiToggle(string const & ui_component)
                statusBar()->setVisible(!statusBar()->isVisible());
        } else if (ui_component == "menubar") {
                menuBar()->setVisible(!menuBar()->isVisible());
+       } else if (ui_component == "zoom") {
+               zoom_value_->setVisible(!zoom_value_->isVisible());
        } else if (ui_component == "zoomslider") {
                zoom_slider_->setVisible(!zoom_slider_->isVisible());
                zoom_in_->setVisible(zoom_slider_->isVisible());
-- 
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to