← Back to team overview

kicad-developers team mailing list archive

Re: [PATCH] Support of horizontal scrolling events in pcbnew and 3d-viewer

 

Any chance of adding support for 3DConexion 3D mouses? ;)

Going back to the Spanish translation of KiCad...

On 01/11/2015 15:37, Nick Østergaard wrote:
By the way, could you please attach patches instead of inlining in the mail?

2015-11-01 11:54 GMT+01:00 Yauhen Kharuzhy <jekhor@xxxxxxxxx>:
Add handling of horizontal mouse wheel scrolling to new GL pcbnew canvas
and to 3d-viewer like eeschema has (left-right panning with Shift key down).

Horizontal scrolling events are usual case for touchpads and TrackPoint
devices.

Signed-off-by: Yauhen Kharuzhy <jekhor@xxxxxxxxx>
---
  3d-viewer/3d_canvas.cpp          |  6 ++++--
  common/view/wx_view_controls.cpp | 26 ++++++++++++++++++++++++--
  2 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/3d-viewer/3d_canvas.cpp b/3d-viewer/3d_canvas.cpp
index 24d022a..c8d7e84 100644
--- a/3d-viewer/3d_canvas.cpp
+++ b/3d-viewer/3d_canvas.cpp
@@ -285,12 +285,14 @@ void EDA_3D_CANVAS::SetView3D( int keycode )

  void EDA_3D_CANVAS::OnMouseWheel( wxMouseEvent& event )
  {
+    int axis = event.GetWheelAxis();
+
      if( event.ShiftDown() )
      {
          if( event.GetWheelRotation() < 0 )
-            SetView3D( WXK_UP );    // move up
+            SetView3D( (axis == wxMOUSE_WHEEL_VERTICAL) ? WXK_UP : WXK_RIGHT );
          else
-            SetView3D( WXK_DOWN );  // move down
+            SetView3D( (axis == wxMOUSE_WHEEL_VERTICAL) ? WXK_DOWN : WXK_LEFT );
      }
      else if( event.ControlDown() )
      {
diff --git a/common/view/wx_view_controls.cpp b/common/view/wx_view_controls.cpp
index 3484a15..b745d1b 100644
--- a/common/view/wx_view_controls.cpp
+++ b/common/view/wx_view_controls.cpp
@@ -102,14 +102,36 @@ void WX_VIEW_CONTROLS::onWheel( wxMouseEvent& aEvent )
          VECTOR2D scrollVec = m_view->ToWorld( m_view->GetScreenPixelSize(), false ) *
                               ( (double) aEvent.GetWheelRotation() * wheelPanSpeed );
          double   scrollSpeed;
+        double   deltaX = 0.0, deltaY = 0.0;

          if( std::abs( scrollVec.x ) > std::abs( scrollVec.y ) )
              scrollSpeed = scrollVec.x;
          else
              scrollSpeed = scrollVec.y;

-        VECTOR2D delta( aEvent.ControlDown() ? -scrollSpeed : 0.0,
-                        aEvent.ShiftDown() ? -scrollSpeed : 0.0 );
+        int axis = aEvent.GetWheelAxis();
+
+        switch( axis )
+        {
+        case wxMOUSE_WHEEL_VERTICAL:
+            if( aEvent.ControlDown() )
+            {
+                deltaX = -scrollSpeed;
+                deltaY = 0.0;
+            }
+            else
+            {
+                deltaY = -scrollSpeed;
+                deltaX = 0;
+            }
+            break;
+        case wxMOUSE_WHEEL_HORIZONTAL:
+            deltaX = scrollSpeed;
+            deltaY = 0.0;
+            break;
+        }
+
+        VECTOR2D delta( deltaX, deltaY );

          m_view->SetCenter( m_view->GetCenter() + delta );
      }
--
2.5.3


_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp
_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp




References