Single items are dragged by their origin in GAL canvas.
This commit is contained in:
parent
fe341876eb
commit
afbe21fe70
|
@ -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<BOARD_ITEM*>( selection.items.GetPickedItem( 0 ) )->GetPosition();
|
||||
selection.Item<BOARD_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<BOARD_ITEM*>( selection.items.GetPickedItem( i ) );
|
||||
item->Move( movement + m_offset );
|
||||
}
|
||||
selection.Item<BOARD_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<BOARD_ITEM*>( 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<BOARD_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<BOARD_ITEM*>( 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<BOARD_ITEM*>( 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<BOARD_ITEM*>( aSelection.items.GetPickedItem( 0 ) )->GetPosition() - m_offset;
|
||||
return aSelection.Item<BOARD_ITEM>( 0 )->GetPosition();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue