Make move tool obey snap settings

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21192
This commit is contained in:
Seth Hillbrand 2025-08-15 06:34:51 -07:00
parent 53e8d051e3
commit 8bf7975440
2 changed files with 16 additions and 2 deletions

View File

@ -421,6 +421,20 @@ void TOOL_BASE::updateEndItem( const TOOL_EVENT& aEvent )
controls()->ForceCursorPosition( true, m_endSnapPoint ); controls()->ForceCursorPosition( true, m_endSnapPoint );
if( GetAngleSnapMode() != LEADER_MODE::DIRECT
&& ( m_router->GetState() == ROUTER::DRAG_SEGMENT
|| m_router->GetState() == ROUTER::DRAG_COMPONENT ) )
{
VECTOR2I moveVector = m_endSnapPoint - m_startSnapPoint;
if( GetAngleSnapMode() == LEADER_MODE::DEG45 )
m_endSnapPoint = m_startSnapPoint + GetVectorSnapped45( moveVector );
else if( GetAngleSnapMode() == LEADER_MODE::DEG90 )
m_endSnapPoint = m_startSnapPoint + GetVectorSnapped90( moveVector );
controls()->ForceCursorPosition( true, m_endSnapPoint );
}
if( m_endItem ) if( m_endItem )
{ {
wxLogTrace( wxT( "PNS" ), wxT( "%s, layer : %d" ), wxLogTrace( wxT( "PNS" ), wxT( "%s, layer : %d" ),

View File

@ -441,7 +441,7 @@ bool EDIT_TOOL::doMoveSelection( const TOOL_EVENT& aEvent, BOARD_COMMIT* aCommit
VECTOR2I prevPos; VECTOR2I prevPos;
bool enableLocalRatsnest = true; bool enableLocalRatsnest = true;
bool hv45Mode = false; bool hv45Mode = GetAngleSnapMode() != LEADER_MODE::DIRECT;
bool eatFirstMouseUp = true; bool eatFirstMouseUp = true;
bool allowRedraw3D = cfg->m_Display.m_Live3DRefresh; bool allowRedraw3D = cfg->m_Display.m_Live3DRefresh;
bool showCourtyardConflicts = !m_isFootprintEditor && cfg->m_ShowCourtyardCollisions; bool showCourtyardConflicts = !m_isFootprintEditor && cfg->m_ShowCourtyardCollisions;
@ -780,7 +780,7 @@ bool EDIT_TOOL::doMoveSelection( const TOOL_EVENT& aEvent, BOARD_COMMIT* aCommit
} }
else if( evt->IsAction( &PCB_ACTIONS::toggleHV45Mode ) ) else if( evt->IsAction( &PCB_ACTIONS::toggleHV45Mode ) )
{ {
hv45Mode = !hv45Mode; hv45Mode = GetAngleSnapMode() != LEADER_MODE::DIRECT;
displayConstraintsMessage( hv45Mode ); displayConstraintsMessage( hv45Mode );
evt->SetPassEvent( false ); evt->SetPassEvent( false );
} }