On 11/2/2015 3:00 PM, Garth Corral wrote: > >> On Nov 2, 2015, at 10:25 AM, Wayne Stambaugh <[email protected]> wrote: >> >> On 11/1/2015 9:42 AM, Bernhard Stegmaier wrote: >>> If this capability should be added now, it should be done consistent for >>> all platforms. >>> We had this discussion for OS X already way back, but back then nobody >>> seemed to be interested in adding also for Windows/Linux… >>> >>> Garth made some changes where you even could switch between mouse wheel X/Y >>> panning and normal behaviour via preferences menu. >> >> If I remember correctly, Garth's changes broke the existing behavior >> which made it a non-starter. If this fix didn't break the existing >> behavior then I wouldn't have a problem accepting it but not until after >> the stable release. It's getting too late for changes that could >> potentially introduce new bugs. Our mouse event handling code is a mess >> and very fragile so adding more changes to it is just inviting problems. >> > To be clear, it did not break the behavior. It was a conscious decision to > change the currently broken behavior. I knew it would not be received well, > but whatever.
Refresh my memory. What is broken about the current behavior? I thought this was adding new behavior to handle track pad devices which should not have impacted the mouse scroll wheel panning. Are you saying that this could not be implemented without changing the current panning behavior? > > > Garth > > >>> >>> >>> Regards, >>> Bernhard >>> >>>> On 01 Nov 2015, at 15:37, Nick Østergaard <[email protected]> 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 <[email protected]>: >>>>> 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). How and when did this happen? All canvas movement code should have been implemented in the EDA_DRAW_PANEL class so that it gets inherited by all objects derived from it (which is all of the schematic and board drawing canvases). The 3D canvas is not derived from EDA_DRAW_PANEL so it needs to have this functionality added to the EDA_3D_CANVAS class. This code needs to be removed from Eeschema and pushed down the stack where it belongs. >>>>> >>>>> Horizontal scrolling events are usual case for touchpads and TrackPoint >>>>> devices. >>>>> >>>>> Signed-off-by: Yauhen Kharuzhy <[email protected]> >>>>> --- >>>>> 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 : [email protected] >>>>> Unsubscribe : https://launchpad.net/~kicad-developers >>>>> More help : https://help.launchpad.net/ListHelp >>>> >>>> _______________________________________________ >>>> Mailing list: https://launchpad.net/~kicad-developers >>>> Post to : [email protected] >>>> Unsubscribe : https://launchpad.net/~kicad-developers >>>> More help : https://help.launchpad.net/ListHelp >>> >>> >>> _______________________________________________ >>> Mailing list: https://launchpad.net/~kicad-developers >>> Post to : [email protected] >>> Unsubscribe : https://launchpad.net/~kicad-developers >>> More help : https://help.launchpad.net/ListHelp >>> >> >> _______________________________________________ >> Mailing list: https://launchpad.net/~kicad-developers >> Post to : [email protected] >> Unsubscribe : https://launchpad.net/~kicad-developers >> More help : https://help.launchpad.net/ListHelp > _______________________________________________ Mailing list: https://launchpad.net/~kicad-developers Post to : [email protected] Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp

