modedit: Enable snapping on anchors

The selection of footprint anchor should obey normal snapping paradigm.
This commit is contained in:
Seth Hillbrand 2019-08-27 21:38:27 -07:00
parent 360a52399a
commit 64c012c175
1 changed files with 7 additions and 1 deletions

View File

@ -836,6 +836,7 @@ int DRAWING_TOOL::SetAnchor( const TOOL_EVENT& aEvent )
return 0; return 0;
SCOPED_DRAW_MODE scopedDrawMode( m_mode, MODE::ANCHOR ); SCOPED_DRAW_MODE scopedDrawMode( m_mode, MODE::ANCHOR );
GRID_HELPER grid( m_frame );
std::string tool = aEvent.GetCommandStr().get(); std::string tool = aEvent.GetCommandStr().get();
m_frame->PushTool( tool ); m_frame->PushTool( tool );
@ -851,6 +852,12 @@ int DRAWING_TOOL::SetAnchor( const TOOL_EVENT& aEvent )
{ {
m_frame->GetCanvas()->SetCurrentCursor( wxCURSOR_BULLSEYE ); m_frame->GetCanvas()->SetCurrentCursor( wxCURSOR_BULLSEYE );
grid.SetSnap( !evt->Modifier( MD_SHIFT ) );
grid.SetUseGrid( !evt->Modifier( MD_ALT ) );
m_controls->SetSnapping( !evt->Modifier( MD_ALT ) );
VECTOR2I cursorPos = grid.BestSnapAnchor( m_controls->GetMousePosition(), LSET::AllLayersMask() );
m_controls->ForceCursorPosition( true, cursorPos );
if( evt->IsClick( BUT_LEFT ) ) if( evt->IsClick( BUT_LEFT ) )
{ {
MODULE* module = (MODULE*) m_frame->GetModel(); MODULE* module = (MODULE*) m_frame->GetModel();
@ -858,7 +865,6 @@ int DRAWING_TOOL::SetAnchor( const TOOL_EVENT& aEvent )
commit.Modify( module ); commit.Modify( module );
// set the new relative internal local coordinates of footprint items // set the new relative internal local coordinates of footprint items
VECTOR2I cursorPos = m_controls->GetCursorPosition();
wxPoint moveVector = module->GetPosition() - (wxPoint) cursorPos; wxPoint moveVector = module->GetPosition() - (wxPoint) cursorPos;
module->MoveAnchorPosition( moveVector ); module->MoveAnchorPosition( moveVector );