From 6633e7aa3e6589e736208a2800bf2f1fa1fc9c93 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Mon, 18 Jul 2016 16:44:06 +0200 Subject: [PATCH] Add feedback in status bar when zooming Moreover enforce better the lower limit of 10 and avoid overflow due to unsigned int. Fixes bug #10212. (cherry picked from commit 8884c4044d7c1d29526aca7b0be1734231c89207) --- src/LyXRC.cpp | 2 ++ src/frontends/qt4/GuiView.cpp | 20 ++++++++++++++------ status.22x | 5 ++++- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/LyXRC.cpp b/src/LyXRC.cpp index 8b7c3b3ec8..7696d0991f 100644 --- a/src/LyXRC.cpp +++ b/src/LyXRC.cpp @@ -604,6 +604,8 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format) case RC_SCREEN_ZOOM: lexrc >> zoom; + if (zoom < 10) + zoom = 10; break; case RC_GEOMETRY_SESSION: diff --git a/src/frontends/qt4/GuiView.cpp b/src/frontends/qt4/GuiView.cpp index bb75daa1d9..ba207f23d4 100644 --- a/src/frontends/qt4/GuiView.cpp +++ b/src/frontends/qt4/GuiView.cpp @@ -1988,6 +1988,8 @@ bool GuiView::getStatus(FuncRequest const & cmd, FuncStatus & flag) case LFUN_BUFFER_ZOOM_OUT: enable = doc_buffer && lyxrc.zoom > 10; + if (lyxrc.zoom <= 10) + flag.message(_("Zoom level cannot be less than 10%.")); break; case LFUN_BUFFER_ZOOM_IN: @@ -3923,17 +3925,22 @@ void GuiView::dispatch(FuncRequest const & cmd, DispatchResult & dr) break; case LFUN_BUFFER_ZOOM_IN: - case LFUN_BUFFER_ZOOM_OUT: + case LFUN_BUFFER_ZOOM_OUT: { + // use a signed temp to avoid overflow + int zoom = lyxrc.zoom; if (cmd.argument().empty()) { if (cmd.action() == LFUN_BUFFER_ZOOM_IN) - lyxrc.zoom += 20; + zoom += 20; else - lyxrc.zoom -= 20; + zoom -= 20; } else - lyxrc.zoom += convert(cmd.argument()); + zoom += convert(cmd.argument()); - if (lyxrc.zoom < 10) - lyxrc.zoom = 10; + if (zoom < 10) + zoom = 10; + lyxrc.zoom = zoom; + + dr.setMessage(bformat(_("Zoom level is now %1$d%"), lyxrc.zoom)); // The global QPixmapCache is used in GuiPainter to cache text // painting so we must reset it. @@ -3941,6 +3948,7 @@ void GuiView::dispatch(FuncRequest const & cmd, DispatchResult & dr) guiApp->fontLoader().update(); lyx::dispatch(FuncRequest(LFUN_SCREEN_FONT_UPDATE)); break; + } case LFUN_VC_REGISTER: case LFUN_VC_RENAME: diff --git a/status.22x b/status.22x index 772b504df5..64aedc88c4 100644 --- a/status.22x +++ b/status.22x @@ -20,6 +20,9 @@ What's new * USER INTERFACE +* When changing zoom level, show current value in status bar (bug + 10212). + * DOCUMENTATION AND LOCALIZATION @@ -42,7 +45,7 @@ What's new - Avoid crashing in release mode if we stumble across an unrealized font. -- Fix display of citations with two authors. +- Fix display of citations with two authors. - Fix display of multi-author citations when the GUI language is not English. -- 2.39.5