Commit e3c4f425 authored by Maciej Suminski's avatar Maciej Suminski
Browse files

Fixed wrong reference point for copied items in subsequent module editor invocations (GAL).

parent ac8ee56e
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -107,6 +107,7 @@ bool FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD( MODULE* aModule )


    SetCrossHairPosition( wxPoint( 0, 0 ) );
    SetCrossHairPosition( wxPoint( 0, 0 ) );
    PlaceModule( newModule, NULL );
    PlaceModule( newModule, NULL );
    newModule->SetPosition( wxPoint( 0, 0 ) ); // cursor in GAL may not be initialized at the moment


    // Put it on FRONT layer,
    // Put it on FRONT layer,
    // because this is the default in ModEdit, and in libs
    // because this is the default in ModEdit, and in libs
+6 −4
Original line number Original line Diff line number Diff line
@@ -453,7 +453,7 @@ int EDIT_TOOL::CopyItems( TOOL_EVENT& aEvent )
    frame->DisplayToolMsg( _( "Select reference point" ) );
    frame->DisplayToolMsg( _( "Select reference point" ) );


    bool cancelled = false;
    bool cancelled = false;
    VECTOR2I cursorPos;
    VECTOR2I cursorPos = getViewControls()->GetCursorPosition();


    while( OPT_TOOL_EVENT evt = Wait() )
    while( OPT_TOOL_EVENT evt = Wait() )
    {
    {
@@ -490,8 +490,10 @@ int EDIT_TOOL::CopyItems( TOOL_EVENT& aEvent )
            module.Add( clone );
            module.Add( clone );
        }
        }


        // Set the new relative internal local coordinates of footprint items
        // Set the new relative internal local coordinates of copied items
        wxPoint moveVector = module.GetPosition() - wxPoint( cursorPos.x, cursorPos.y );
        MODULE* editedModule = getModel<BOARD>()->m_Modules;
        wxPoint moveVector = module.GetPosition() + editedModule->GetPosition() -
                             wxPoint( cursorPos.x, cursorPos.y );
        module.MoveAnchorPosition( moveVector );
        module.MoveAnchorPosition( moveVector );


        io.Format( &module, 0 );
        io.Format( &module, 0 );
@@ -499,7 +501,7 @@ int EDIT_TOOL::CopyItems( TOOL_EVENT& aEvent )
        m_toolMgr->SaveClipboard( data );
        m_toolMgr->SaveClipboard( data );
    }
    }


    frame->DisplayToolMsg( wxString::Format( _( "Copied %d items" ), selection.Size() ) );
    frame->DisplayToolMsg( wxString::Format( _( "Copied %d item(s)" ), selection.Size() ) );
    controls->SetSnapping( false );
    controls->SetSnapping( false );
    controls->ShowCursor( false );
    controls->ShowCursor( false );
    controls->SetAutoPan( false );
    controls->SetAutoPan( false );