More direct selection handling.

Fixes: lp:1842750
* https://bugs.launchpad.net/kicad/+bug/1842750
This commit is contained in:
Jeff Young 2019-09-07 20:51:30 +01:00
parent 14c4175040
commit 0ff20c18a3
1 changed files with 7 additions and 6 deletions

View File

@ -721,6 +721,8 @@ int LIB_EDIT_TOOL::Duplicate( const TOOL_EVENT& aEvent )
if( !selection.Front()->IsMoving() )
saveCopyInUndoList( m_frame->GetCurPart(), UR_LIBEDIT );
EDA_ITEMS newItems;
for( unsigned ii = 0; ii < selection.GetSize(); ++ii )
{
LIB_ITEM* oldItem = static_cast<LIB_ITEM*>( selection.GetItem( ii ) );
@ -728,18 +730,17 @@ int LIB_EDIT_TOOL::Duplicate( const TOOL_EVENT& aEvent )
oldItem->ClearFlags( SELECTED );
newItem->SetFlags( IS_NEW | IS_PASTED | SELECTED );
newItem->SetParent( part );
newItems.push_back( newItem );
part->GetDrawItems().push_back( newItem );
getView()->Add( newItem );
}
m_selectionTool->RebuildSelection();
m_toolMgr->RunAction( EE_ACTIONS::clearSelection, true );
m_toolMgr->RunAction( EE_ACTIONS::addItemsToSel, true, &newItems );
if( !selection.Empty() )
{
selection.SetReferencePoint( mapCoords( getViewControls()->GetCursorPosition( true ) ) );
m_toolMgr->RunAction( EE_ACTIONS::move, false );
}
selection.SetReferencePoint( mapCoords( getViewControls()->GetCursorPosition( true ) ) );
m_toolMgr->RunAction( EE_ACTIONS::move, false );
return 0;
}