# HG changeset patch # User Rik # Date 1429319811 25200 # Node ID c6c5cb9c4743aab582a628cc1d169f2562774d26 # Parent 93b3757a9623003761d551f28556d7722a3eb12d 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. diff -r 93b3757a9623 -r c6c5cb9c4743 libgui/graphics/Canvas.cc --- 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 (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 (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 ()); diff -r 93b3757a9623 -r c6c5cb9c4743 libgui/graphics/Canvas.h --- 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;