Improved MousewheelPAN mode.
This commit is contained in:
parent
f079b7f98b
commit
3dc2050498
|
@ -439,26 +439,35 @@ void EDA_3D_CANVAS::OnMouseWheel( wxMouseEvent &event )
|
|||
float delta_move = m_delta_move_step_factor * m_settings.CameraGet().ZoomGet();
|
||||
|
||||
if( m_settings.GetFlag( FL_MOUSEWHEEL_PANNING ) )
|
||||
delta_move *= (0.05f * event.GetWheelRotation());
|
||||
delta_move *= (0.01f * event.GetWheelRotation());
|
||||
else
|
||||
if( event.GetWheelRotation() < 0 )
|
||||
delta_move = -delta_move;
|
||||
|
||||
if( m_settings.GetFlag( FL_MOUSEWHEEL_PANNING ) )
|
||||
// mousewheel_panning enabled:
|
||||
// wheel -> pan;
|
||||
// wheel + shift -> horizontal scrolling;
|
||||
// wheel + ctrl -> zooming;
|
||||
// mousewheel_panning disabled:
|
||||
// wheel + shift -> vertical scrolling;
|
||||
// wheel + ctrl -> horizontal scrolling;
|
||||
// wheel -> zooming.
|
||||
|
||||
if( m_settings.GetFlag( FL_MOUSEWHEEL_PANNING ) && !event.ControlDown() )
|
||||
{
|
||||
if( event.GetWheelAxis() == wxMOUSE_WHEEL_HORIZONTAL )
|
||||
if( event.GetWheelAxis() == wxMOUSE_WHEEL_HORIZONTAL || event.ShiftDown() )
|
||||
m_settings.CameraGet().Pan( SFVEC3F( -delta_move, 0.0f, 0.0f ) );
|
||||
else
|
||||
m_settings.CameraGet().Pan( SFVEC3F( 0.0f, -delta_move, 0.0f ) );
|
||||
|
||||
mouseActivity = true;
|
||||
}
|
||||
else if( event.ShiftDown() )
|
||||
else if( event.ShiftDown() && !m_settings.GetFlag( FL_MOUSEWHEEL_PANNING ) )
|
||||
{
|
||||
m_settings.CameraGet().Pan( SFVEC3F( 0.0f, -delta_move, 0.0f ) );
|
||||
mouseActivity = true;
|
||||
}
|
||||
else if( event.ControlDown() )
|
||||
else if( event.ControlDown() && !m_settings.GetFlag( FL_MOUSEWHEEL_PANNING ) )
|
||||
{
|
||||
m_settings.CameraGet().Pan( SFVEC3F( delta_move, 0.0f, 0.0f ) );
|
||||
mouseActivity = true;
|
||||
|
|
|
@ -981,15 +981,35 @@ void EDA_DRAW_PANEL::OnMouseWheel( wxMouseEvent& event )
|
|||
|
||||
if( m_enableMousewheelPan )
|
||||
{
|
||||
wxPoint newStart = GetViewStart();
|
||||
if( axis == wxMOUSE_WHEEL_HORIZONTAL )
|
||||
newStart.x += wheelRotation;
|
||||
// MousewheelPAN + Ctrl = zooming
|
||||
if( event.ControlDown() && !event.ShiftDown() )
|
||||
{
|
||||
if( wheelRotation > 0 )
|
||||
cmd.SetId( ID_POPUP_ZOOM_IN );
|
||||
else if( wheelRotation < 0)
|
||||
cmd.SetId( ID_POPUP_ZOOM_OUT );
|
||||
}
|
||||
// MousewheelPAN + Shift = horizontal scrolling
|
||||
else if( event.ShiftDown() && !event.ControlDown() )
|
||||
{
|
||||
if( wheelRotation > 0 )
|
||||
cmd.SetId( ID_PAN_LEFT );
|
||||
else if( wheelRotation < 0)
|
||||
cmd.SetId( ID_PAN_RIGHT );
|
||||
}
|
||||
// Without modifiers MousewheelPAN - just pan
|
||||
else
|
||||
newStart.y -= wheelRotation;
|
||||
{
|
||||
wxPoint newStart = GetViewStart();
|
||||
if( axis == wxMOUSE_WHEEL_HORIZONTAL )
|
||||
newStart.x += wheelRotation;
|
||||
else
|
||||
newStart.y -= wheelRotation;
|
||||
|
||||
wxPoint center = GetScreenCenterLogicalPosition();
|
||||
GetParent()->SetScrollCenterPosition( center );
|
||||
Scroll( newStart );
|
||||
wxPoint center = GetScreenCenterLogicalPosition();
|
||||
GetParent()->SetScrollCenterPosition( center );
|
||||
Scroll( newStart );
|
||||
}
|
||||
}
|
||||
else if( wheelRotation > 0 )
|
||||
{
|
||||
|
|
|
@ -98,7 +98,17 @@ void WX_VIEW_CONTROLS::onWheel( wxMouseEvent& aEvent )
|
|||
{
|
||||
const double wheelPanSpeed = 0.001;
|
||||
|
||||
if( aEvent.ControlDown() || aEvent.ShiftDown() || m_enableMousewheelPan )
|
||||
// mousewheelpan disabled:
|
||||
// wheel + ctrl -> horizontal scrolling;
|
||||
// wheel + shift -> vertical scrolling;
|
||||
// wheel -> zooming;
|
||||
// mousewheelpan enabled:
|
||||
// wheel -> pan;
|
||||
// wheel + ctrl -> zooming;
|
||||
// wheel + shift -> horizontal scrolling.
|
||||
|
||||
if( ( !m_enableMousewheelPan && ( aEvent.ControlDown() || aEvent.ShiftDown() ) ) ||
|
||||
( m_enableMousewheelPan && !aEvent.ControlDown() ) )
|
||||
{
|
||||
// Scrolling
|
||||
VECTOR2D scrollVec = m_view->ToWorld( m_view->GetScreenPixelSize(), false ) *
|
||||
|
@ -109,7 +119,7 @@ void WX_VIEW_CONTROLS::onWheel( wxMouseEvent& aEvent )
|
|||
|
||||
if ( m_enableMousewheelPan )
|
||||
{
|
||||
if ( axis == wxMOUSE_WHEEL_HORIZONTAL )
|
||||
if ( axis == wxMOUSE_WHEEL_HORIZONTAL || aEvent.ShiftDown() )
|
||||
scrollX = scrollVec.x;
|
||||
else
|
||||
scrollY = -scrollVec.y;
|
||||
|
|
Loading…
Reference in New Issue