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;