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 8884c4044d)
This commit is contained in:
Jean-Marc Lasgouttes 2016-07-18 16:44:06 +02:00
parent 32b56ee8f7
commit 6633e7aa3e
3 changed files with 20 additions and 7 deletions

View File

@ -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:

View File

@ -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<int>(cmd.argument());
zoom += convert<int>(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:

View File

@ -20,6 +20,9 @@ What's new
* USER INTERFACE
* When changing zoom level, show current value in status bar (bug
10212).
* DOCUMENTATION AND LOCALIZATION