Set pinmap after updating pins
When duplicating and existing symbol, we must set the pins before setting the lib symbol as the lib symbol will generate a pin map that will be broken by the shift to new pins Fixes https://gitlab.com/kicad/code/kicad/-/issues/15728
This commit is contained in:
parent
54171ec030
commit
12ebb2bbfa
|
@ -174,9 +174,6 @@ SCH_SYMBOL::SCH_SYMBOL( const SCH_SYMBOL& aSymbol ) :
|
||||||
m_excludedFromBoard = aSymbol.m_excludedFromBoard;
|
m_excludedFromBoard = aSymbol.m_excludedFromBoard;
|
||||||
m_DNP = aSymbol.m_DNP;
|
m_DNP = aSymbol.m_DNP;
|
||||||
|
|
||||||
if( aSymbol.m_part )
|
|
||||||
SetLibSymbol( new LIB_SYMBOL( *aSymbol.m_part ) );
|
|
||||||
|
|
||||||
const_cast<KIID&>( m_Uuid ) = aSymbol.m_Uuid;
|
const_cast<KIID&>( m_Uuid ) = aSymbol.m_Uuid;
|
||||||
|
|
||||||
m_transform = aSymbol.m_transform;
|
m_transform = aSymbol.m_transform;
|
||||||
|
@ -197,6 +194,9 @@ SCH_SYMBOL::SCH_SYMBOL( const SCH_SYMBOL& aSymbol ) :
|
||||||
m_pins.back()->SetParent( this );
|
m_pins.back()->SetParent( this );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( aSymbol.m_part )
|
||||||
|
SetLibSymbol( new LIB_SYMBOL( *aSymbol.m_part ) );
|
||||||
|
|
||||||
m_fieldsAutoplaced = aSymbol.m_fieldsAutoplaced;
|
m_fieldsAutoplaced = aSymbol.m_fieldsAutoplaced;
|
||||||
m_schLibSymbolName = aSymbol.m_schLibSymbolName;
|
m_schLibSymbolName = aSymbol.m_schLibSymbolName;
|
||||||
}
|
}
|
||||||
|
@ -407,8 +407,7 @@ void SCH_SYMBOL::UpdatePins()
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// This is a pin that was not found in the symbol, so create a new one.
|
// This is a pin that was not found in the symbol, so create a new one.
|
||||||
pin = new SCH_PIN( libPin, this );
|
pin = m_pins.emplace_back( std::make_unique<SCH_PIN>( SCH_PIN( libPin, this ) ) ).get();
|
||||||
m_pins.emplace_back( pin );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_pinMap[ libPin ] = pin;
|
m_pinMap[ libPin ] = pin;
|
||||||
|
|
Loading…
Reference in New Issue