mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-04-21 09:41:41 +00:00
Compare SCH_SHAPE UUIDs after comparing shape object coordinates.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19716
This commit is contained in:
parent
b2ef81808b
commit
048669eced
@ -642,12 +642,36 @@ double SCH_SHAPE::Similarity( const SCH_ITEM& aOther ) const
|
||||
|
||||
int SCH_SHAPE::compare( const SCH_ITEM& aOther, int aCompareFlags ) const
|
||||
{
|
||||
int retv = SCH_ITEM::compare( aOther, aCompareFlags );
|
||||
int cmpFlags = aCompareFlags;
|
||||
|
||||
// The object UUIDs must be compared after the shape coordinates because shapes do not
|
||||
// have immutable UUIDs.
|
||||
if( !( cmpFlags & ( SCH_ITEM::COMPARE_FLAGS::EQUALITY | SCH_ITEM::COMPARE_FLAGS::ERC ) ) )
|
||||
cmpFlags |= SCH_ITEM::COMPARE_FLAGS::EQUALITY;
|
||||
|
||||
int retv = SCH_ITEM::compare( aOther, cmpFlags );
|
||||
|
||||
if( retv )
|
||||
return retv;
|
||||
|
||||
return EDA_SHAPE::Compare( &static_cast<const SCH_SHAPE&>( aOther ) );
|
||||
retv = EDA_SHAPE::Compare( &static_cast<const SCH_SHAPE&>( aOther ) );
|
||||
|
||||
if( retv )
|
||||
return retv;
|
||||
|
||||
if( ( aCompareFlags & SCH_ITEM::COMPARE_FLAGS::EQUALITY )
|
||||
|| ( aCompareFlags & SCH_ITEM::COMPARE_FLAGS::ERC ) )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if( m_Uuid < aOther.m_Uuid )
|
||||
return -1;
|
||||
|
||||
if( m_Uuid > aOther.m_Uuid )
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user