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: case RC_SCREEN_ZOOM:
lexrc >> zoom; lexrc >> zoom;
if (zoom < 10)
zoom = 10;
break; break;
case RC_GEOMETRY_SESSION: case RC_GEOMETRY_SESSION:

View File

@ -1988,6 +1988,8 @@ bool GuiView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
case LFUN_BUFFER_ZOOM_OUT: case LFUN_BUFFER_ZOOM_OUT:
enable = doc_buffer && lyxrc.zoom > 10; enable = doc_buffer && lyxrc.zoom > 10;
if (lyxrc.zoom <= 10)
flag.message(_("Zoom level cannot be less than 10%."));
break; break;
case LFUN_BUFFER_ZOOM_IN: case LFUN_BUFFER_ZOOM_IN:
@ -3923,17 +3925,22 @@ void GuiView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
break; break;
case LFUN_BUFFER_ZOOM_IN: 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.argument().empty()) {
if (cmd.action() == LFUN_BUFFER_ZOOM_IN) if (cmd.action() == LFUN_BUFFER_ZOOM_IN)
lyxrc.zoom += 20; zoom += 20;
else else
lyxrc.zoom -= 20; zoom -= 20;
} else } else
lyxrc.zoom += convert<int>(cmd.argument()); zoom += convert<int>(cmd.argument());
if (lyxrc.zoom < 10) if (zoom < 10)
lyxrc.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 // The global QPixmapCache is used in GuiPainter to cache text
// painting so we must reset it. // painting so we must reset it.
@ -3941,6 +3948,7 @@ void GuiView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
guiApp->fontLoader().update(); guiApp->fontLoader().update();
lyx::dispatch(FuncRequest(LFUN_SCREEN_FONT_UPDATE)); lyx::dispatch(FuncRequest(LFUN_SCREEN_FONT_UPDATE));
break; break;
}
case LFUN_VC_REGISTER: case LFUN_VC_REGISTER:
case LFUN_VC_RENAME: case LFUN_VC_RENAME:

View File

@ -20,6 +20,9 @@ What's new
* USER INTERFACE * USER INTERFACE
* When changing zoom level, show current value in status bar (bug
10212).
* DOCUMENTATION AND LOCALIZATION * DOCUMENTATION AND LOCALIZATION
@ -42,7 +45,7 @@ What's new
- Avoid crashing in release mode if we stumble across an unrealized font. - 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. - Fix display of multi-author citations when the GUI language is not English.