]> git.lyx.org Git - features.git/commitdiff
Fix bug #3038: wish for lfuns for zoom-in and zoom-out
authorVincent van Ravesteijn <vfr@lyx.org>
Sat, 4 Apr 2009 09:14:38 +0000 (09:14 +0000)
committerVincent van Ravesteijn <vfr@lyx.org>
Sat, 4 Apr 2009 09:14:38 +0000 (09:14 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29077 a592a061-630c-0410-9148-cb99ea01b6c8

src/FuncCode.h
src/LyXAction.cpp
src/frontends/qt4/GuiView.cpp
src/frontends/qt4/GuiWorkArea.cpp

index 5365c4df283e84ae73bcf2d191e887638e724d51..e83c8bbc25c2b612c32d010b1dff0b11179ecbf4 100644 (file)
@@ -423,6 +423,8 @@ enum FuncCode
        LFUN_INSET_BEGIN_SELECT,        // JMarc, 20090316
        LFUN_INSET_END_SELECT,          // JMarc, 20090316
        LFUN_SCREEN_SHOW_CURSOR,        // vfr, 20090325
+       LFUN_BUFFER_ZOOM_IN,            // vfr, 20090330
+       LFUN_BUFFER_ZOOM_OUT,           // vfr, 20090330
 
 
        LFUN_LASTACTION                 // end of the table
index ecd6b6f3e0f9d33eb4482ab15396964ccd57dbe2..e70d5a8195b8c06b827ef7a5d6518eb34fa73969 100644 (file)
@@ -3204,6 +3204,24 @@ void LyXAction::init()
  */
                { LFUN_COPY_LABEL_AS_REF, "copy-label-as-reference", ReadOnly | NoUpdate, Edit },
 
+/*!
+ * \var lyx::FuncCode lyx::LFUN_BUFFER_ZOOM_IN
+ * \li Action: Increases the zoom of the screen fonts.
+ * \li Syntax: buffer-zoom-in
+ * \li Origin: vfr, 30 Mar 2009
+ * \endvar
+ */
+               { LFUN_BUFFER_ZOOM_IN, "buffer-zoom-in", ReadOnly, Buffer },
+
+/*!
+ * \var lyx::FuncCode lyx::LFUN_BUFFER_ZOOM_OUT
+ * \li Action: Decreases the zoom of the screen fonts.
+ * \li Syntax: buffer-zoom-out
+ * \li Origin: vfr, 30 Mar 2009
+ * \endvar
+ */
+               { LFUN_BUFFER_ZOOM_OUT, "buffer-zoom-out", ReadOnly, Buffer },
+
                { LFUN_NOACTION, "", Noop, Hidden }
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
        };
index 02f143ce7d8ed9185f356a608e1c541e5ffea774..402f39c3790164954686aa0b003577997a8f8715 100644 (file)
@@ -17,6 +17,7 @@
 
 #include "Dialog.h"
 #include "FileDialog.h"
+#include "FontLoader.h"
 #include "GuiApplication.h"
 #include "GuiCommandBuffer.h"
 #include "GuiCompleter.h"
 #include "Toolbars.h"
 #include "version.h"
 
-#include "support/lassert.h"
+#include "support/convert.h"
 #include "support/debug.h"
 #include "support/ExceptionMessage.h"
 #include "support/FileName.h"
 #include "support/filetools.h"
 #include "support/gettext.h"
 #include "support/ForkedCalls.h"
+#include "support/lassert.h"
 #include "support/lstrings.h"
 #include "support/os.h"
 #include "support/Package.h"
@@ -1326,13 +1328,21 @@ bool GuiView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
                        enable = false;
                break;
 
-               case LFUN_COMPLETION_CANCEL:
+       case LFUN_COMPLETION_CANCEL:
                if (!d.current_work_area_
                    || (!d.current_work_area_->completer().popupVisible()
                        && !d.current_work_area_->completer().inlineVisible()))
                        enable = false;
                break;
 
+       case LFUN_BUFFER_ZOOM_OUT:
+               enable = buf && lyxrc.zoom > 10;
+               break;
+
+       case LFUN_BUFFER_ZOOM_IN:
+               enable = buf;
+               break;
+
        default:
                return false;
        }
@@ -2202,6 +2212,25 @@ bool GuiView::dispatch(FuncRequest const & cmd)
                                d.current_work_area_->completer().activate();
                        break;
 
+               case LFUN_BUFFER_ZOOM_IN:
+               case LFUN_BUFFER_ZOOM_OUT:
+                       if (cmd.argument().empty()) {
+                               if (cmd.action == LFUN_BUFFER_ZOOM_IN)
+                                       lyxrc.zoom += 20;
+                               else
+                                       lyxrc.zoom -= 20;
+                       } else
+                               lyxrc.zoom += convert<int>(cmd.argument());
+
+                       if (lyxrc.zoom < 10)
+                               lyxrc.zoom = 10;
+                               
+                       // The global QPixmapCache is used in GuiPainter to cache text
+                       // painting so we must reset it.
+                       QPixmapCache::clear();
+                       guiApp->fontLoader().update();
+                       lyx::dispatch(FuncRequest(LFUN_SCREEN_FONT_UPDATE));
+                       break;
 
                default:
                        dispatched = false;
index 344b63044cda63b3a47c22171b9817c4a17dd7b0..2d379462d706af94397dea114b2277a6ce367ca2 100644 (file)
@@ -43,6 +43,7 @@
 #include "graphics/GraphicsImage.h"
 #include "graphics/GraphicsLoader.h"
 
+#include "support/convert.h"
 #include "support/debug.h"
 #include "support/gettext.h"
 #include "support/FileName.h"
@@ -810,15 +811,8 @@ void GuiWorkArea::wheelEvent(QWheelEvent * ev)
        // documentation of QWheelEvent)
        int const delta = ev->delta() / 120;
        if (ev->modifiers() & Qt::ControlModifier) {
-               lyxrc.zoom += 5 * delta;
-               if (lyxrc.zoom < 10)
-                       lyxrc.zoom = 10;
-               // The global QPixmapCache is used in GuiPainter to cache text
-               // painting so we must reset it.
-               QPixmapCache::clear();
-               guiApp->fontLoader().update();
-               ev->accept();
-               lyx::dispatch(FuncRequest(LFUN_SCREEN_FONT_UPDATE));
+               docstring arg = convert<docstring>(5 * delta);
+               lyx::dispatch(FuncRequest(LFUN_BUFFER_ZOOM_IN, arg));
                return;
        }