diff --git a/pcbnew/tools/edit_tool.cpp b/pcbnew/tools/edit_tool.cpp index 05f34d8608..8058250e92 100644 --- a/pcbnew/tools/edit_tool.cpp +++ b/pcbnew/tools/edit_tool.cpp @@ -143,14 +143,11 @@ int EDIT_TOOL::Main( TOOL_EVENT& aEvent ) if( m_dragging ) { wxPoint movement = wxPoint( m_cursor.x, m_cursor.y ) - - static_cast( selection.items.GetPickedItem( 0 ) )->GetPosition(); + selection.Item( 0 )->GetPosition(); // Drag items to the current cursor position for( unsigned int i = 0; i < selection.items.GetCount(); ++i ) - { - BOARD_ITEM* item = static_cast( selection.items.GetPickedItem( i ) ); - item->Move( movement + m_offset ); - } + selection.Item( i )->Move( movement ); updateRatsnest( true ); } @@ -160,9 +157,9 @@ int EDIT_TOOL::Main( TOOL_EVENT& aEvent ) editFrame->OnModify(); editFrame->SaveCopyInUndoList( selection.items, UR_CHANGED ); - // Update dragging offset (distance between cursor and the first dragged item) - m_offset = static_cast( selection.items.GetPickedItem( 0 ) )->GetPosition() - - wxPoint( m_cursor.x, m_cursor.y ); + // Set the current cursor position to the first dragged item origin, so the + // movement vector could be computed later + m_cursor = VECTOR2I( selection.Item( 0 )->GetPosition() ); m_dragging = true; } @@ -312,10 +309,6 @@ int EDIT_TOOL::Rotate( TOOL_EVENT& aEvent ) updateRatsnest( m_dragging ); - // Update dragging offset (distance between cursor and the first dragged item) - m_offset = static_cast( selection.items.GetPickedItem( 0 ) )->GetPosition() - - rotatePoint; - if( m_dragging ) selection.group->ViewUpdate( KIGFX::VIEW_ITEM::GEOMETRY ); else @@ -366,10 +359,6 @@ int EDIT_TOOL::Flip( TOOL_EVENT& aEvent ) updateRatsnest( m_dragging ); - // Update dragging offset (distance between cursor and the first dragged item) - m_offset = static_cast( selection.items.GetPickedItem( 0 ) )->GetPosition() - - flipPoint; - if( m_dragging ) selection.group->ViewUpdate( KIGFX::VIEW_ITEM::GEOMETRY ); else @@ -502,7 +491,7 @@ wxPoint EDIT_TOOL::getModificationPoint( const SELECTION_TOOL::SELECTION& aSelec { if( aSelection.Size() == 1 ) { - return static_cast( aSelection.items.GetPickedItem( 0 ) )->GetPosition() - m_offset; + return aSelection.Item( 0 )->GetPosition(); } else { diff --git a/pcbnew/tools/edit_tool.h b/pcbnew/tools/edit_tool.h index 207e446493..fb74135b86 100644 --- a/pcbnew/tools/edit_tool.h +++ b/pcbnew/tools/edit_tool.h @@ -98,9 +98,6 @@ private: ///> Flag determining if anything is being dragged right now bool m_dragging; - ///> Offset from the dragged item's center (anchor) - wxPoint m_offset; - ///> Last cursor position (needed for getModificationPoint() to avoid changes ///> of edit reference point). VECTOR2I m_cursor;