← Back to team overview

kicad-developers team mailing list archive

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

 

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


Follow ups

References