Mercurial > octave-nkf
changeset 20125:c6c5cb9c4743
Right-click should zoom out by 2 for Qt toolkit (bug #44304).
* Canvas.h: New private property bool m_clickMode.
* Canvas.h (Canvas): Set m_clickMode to false in constructor.
* Canvas.cc (canvasMousePressEvent): decode button click and set m_clickMode
appropriately for ZoomIn or ZoomOut.
* Canvas.cc (canvasMouseReleaseEvent): set scale factor for zoom (2.0 / 0.5)
based on m_clickMode.
author | Rik <rik@octave.org> |
---|---|
date | Fri, 17 Apr 2015 18:16:51 -0700 |
parents | 93b3757a9623 |
children | 89d843d6de14 |
files | libgui/graphics/Canvas.cc libgui/graphics/Canvas.h |
diffstat | 2 files changed, 19 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/graphics/Canvas.cc Fri Apr 17 15:02:30 2015 -0700 +++ b/libgui/graphics/Canvas.cc Fri Apr 17 18:16:51 2015 -0700 @@ -632,10 +632,18 @@ m_mouseAnchor = m_mouseCurrent = event->pos (); m_mouseAxes = axesObj.get_handle (); m_mouseMode = newMouseMode; + m_clickMode = newMouseMode == ZoomInMode; break; case Qt::RightButton: - Utils::properties<axes> (axesObj).unzoom (); + if (newMouseMode == ZoomInMode) + { + m_mouseAnchor = m_mouseCurrent = event->pos (); + m_mouseAxes = axesObj.get_handle (); + m_mouseMode = newMouseMode; + m_clickMode = false; + } + break; case Qt::MidButton: @@ -657,7 +665,13 @@ switch (event->buttons ()) { case Qt::LeftButton: - Utils::properties<axes> (axesObj).unzoom (); + if (newMouseMode == ZoomInMode) + { + m_mouseAnchor = m_mouseCurrent = event->pos (); + m_mouseAxes = axesObj.get_handle (); + m_mouseMode = newMouseMode; + m_clickMode = false; + } break; default: @@ -699,7 +713,7 @@ if (m_mouseAnchor == event->pos ()) { - double factor = m_mouseMode == ZoomInMode ? 2.0 : 0.5; + double factor = m_clickMode ? 2.0 : 0.5; ColumnVector p1 = ap.pixel2coord (event->x (), event->y ());
--- a/libgui/graphics/Canvas.h Fri Apr 17 15:02:30 2015 -0700 +++ b/libgui/graphics/Canvas.h Fri Apr 17 18:16:51 2015 -0700 @@ -83,6 +83,7 @@ : m_handle (handle), m_redrawBlocked (false), m_mouseMode (NoMode), + m_clickMode (false), m_eventMask (0) { } @@ -107,6 +108,7 @@ graphics_handle m_handle; bool m_redrawBlocked; MouseMode m_mouseMode; + bool m_clickMode; // True: ZoomIn, False: ZoomOut QPoint m_mouseAnchor; QPoint m_mouseCurrent; graphics_handle m_mouseAxes;