Browse Source

Fix sch_field and pcb_target not returning evaluated similarity correctly

newinvert
Marek Roszko 2 years ago
parent
commit
76e8ed2506
  1. 16
      eeschema/sch_field.cpp
  2. 2
      pcbnew/pcb_target.cpp

16
eeschema/sch_field.cpp

@ -1341,7 +1341,7 @@ double SCH_FIELD::Similarity( const SCH_ITEM& aOther ) const
const SCH_FIELD& field = static_cast<const SCH_FIELD&>( aOther );
double retval = 0.99; // The UUIDs are different, so we start with non-identity
double similarity = 0.99; // The UUIDs are different, so we start with non-identity
if( GetId() != field.GetId() )
{
@ -1349,25 +1349,25 @@ double SCH_FIELD::Similarity( const SCH_ITEM& aOther ) const
if( GetId() < MANDATORY_FIELDS || field.GetId() < MANDATORY_FIELDS )
return 0.0;
else
retval *= 0.5;
similarity *= 0.5;
}
if( GetPosition() != field.GetPosition() )
retval *= 0.5;
similarity *= 0.5;
if( IsNamedVariable() != field.IsNamedVariable() )
retval *= 0.5;
similarity *= 0.5;
if( IsNameShown() != field.IsNameShown() )
retval *= 0.5;
similarity *= 0.5;
if( CanAutoplace() != field.CanAutoplace() )
retval *= 0.5;
similarity *= 0.5;
if( GetText() != field.GetText() )
retval *= Levenshtein( field );
similarity *= Levenshtein( field );
return 1.0;
return similarity;
}

2
pcbnew/pcb_target.cpp

@ -225,7 +225,7 @@ double PCB_TARGET::Similarity( const BOARD_ITEM& aOther ) const
if( GetPosition() != other.GetPosition() )
similarity *= 0.9;
return 1.0;
return similarity;
}
static struct PCB_TARGET_DESC

Loading…
Cancel
Save