Fix bug with swapping pin data for undo.
This commit is contained in:
parent
d89d0e6b74
commit
50a9a6e1f7
|
@ -940,23 +940,37 @@ void SCH_COMPONENT::SwapData( SCH_ITEM* aItem )
|
||||||
std::swap( m_unit, component->m_unit );
|
std::swap( m_unit, component->m_unit );
|
||||||
std::swap( m_convert, component->m_convert );
|
std::swap( m_convert, component->m_convert );
|
||||||
std::swap( m_pins, component->m_pins );
|
std::swap( m_pins, component->m_pins );
|
||||||
std::swap( m_pinMap, component->m_pinMap );
|
|
||||||
|
|
||||||
TRANSFORM tmp = m_transform;
|
m_pinMap.clear();
|
||||||
|
component->m_pinMap.clear();
|
||||||
m_transform = component->m_transform;
|
|
||||||
component->m_transform = tmp;
|
|
||||||
|
|
||||||
m_Fields.swap( component->m_Fields ); // std::vector's swap()
|
m_Fields.swap( component->m_Fields ); // std::vector's swap()
|
||||||
|
|
||||||
// Reparent items after copying data
|
// Reparent items after copying data
|
||||||
// (after swap(), m_Parent member does not point to the right parent):
|
// (after swap(), m_Parent member does not point to the right parent):
|
||||||
|
for( unsigned i = 0; i < m_pins.size(); ++i )
|
||||||
|
{
|
||||||
|
m_pins[ i ].SetParent( this );
|
||||||
|
m_pinMap[ m_pins[ i ].GetLibPin() ] = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
for( unsigned i = 0; i < component->m_pins.size(); ++i )
|
||||||
|
{
|
||||||
|
component->m_pins[ i ].SetParent( component );
|
||||||
|
component->m_pinMap[ component->m_pins[ i ].GetLibPin() ] = i;
|
||||||
|
}
|
||||||
|
|
||||||
for( int ii = 0; ii < component->GetFieldCount(); ++ii )
|
for( int ii = 0; ii < component->GetFieldCount(); ++ii )
|
||||||
component->GetField( ii )->SetParent( component );
|
component->GetField( ii )->SetParent( component );
|
||||||
|
|
||||||
for( int ii = 0; ii < GetFieldCount(); ++ii )
|
for( int ii = 0; ii < GetFieldCount(); ++ii )
|
||||||
GetField( ii )->SetParent( this );
|
GetField( ii )->SetParent( this );
|
||||||
|
|
||||||
|
TRANSFORM tmp = m_transform;
|
||||||
|
|
||||||
|
m_transform = component->m_transform;
|
||||||
|
component->m_transform = tmp;
|
||||||
|
|
||||||
std::swap( m_PathsAndReferences, component->m_PathsAndReferences );
|
std::swap( m_PathsAndReferences, component->m_PathsAndReferences );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue