Copy unit numbers to symbol instances when pasting sheets

Fixes https://gitlab.com/kicad/code/kicad/issues/5898 (B)
This commit is contained in:
david-beinder 2021-01-21 18:36:59 +01:00 committed by Seth Hillbrand
parent 4bcd56b1f6
commit 2e21489acf
1 changed files with 13 additions and 11 deletions

View File

@ -1300,21 +1300,23 @@ void SCH_EDITOR_CONTROL::updatePastedInstances( const SCH_SHEET_PATH& aPastePath
{
SCH_COMPONENT* symbol = static_cast<SCH_COMPONENT*>( item );
if( aForceKeepAnnotations )
KIID_PATH clipItemPath = aClipPath;
clipItemPath.push_back( symbol->m_Uuid );
// SCH_REFERENCE_LIST doesn't include the root sheet in the path
clipItemPath.erase( clipItemPath.begin() );
int ii = m_supplementaryClipboardInstances.FindRefByPath( clipItemPath.AsString() );
if( ii >= 0 )
{
KIID_PATH clipItemPath = aClipPath;
clipItemPath.push_back( symbol->m_Uuid );
SCH_REFERENCE instance = m_supplementaryClipboardInstances[ ii ];
// SCH_REFERENCE_LIST doesn't include the root sheet in the path
clipItemPath.erase( clipItemPath.begin() );
symbol->SetUnitSelection( &aPastePath, instance.GetUnit() );
symbol->SetUnit( instance.GetUnit() );
int ii = m_supplementaryClipboardInstances.FindRefByPath( clipItemPath.AsString() );
if( ii >= 0 )
if( aForceKeepAnnotations )
{
SCH_REFERENCE instance = m_supplementaryClipboardInstances[ ii ];
symbol->SetUnit( instance.GetUnit() );
symbol->SetRef( &aPastePath, instance.GetRef() );
symbol->SetValue( &aPastePath, instance.GetValue() );
symbol->SetFootprint( &aPastePath, instance.GetFootprint() );