Browse Source

Repair label incrementer to handle formatting constructs.

Fixes https://gitlab.com/kicad/code/kicad/issues/8992
6.0.7
Jeff Young 4 years ago
parent
commit
dfacac5eb6
  1. 26
      eeschema/sch_text.cpp

26
eeschema/sch_text.cpp

@ -53,27 +53,29 @@ using KIGFX::SCH_RENDER_SETTINGS;
bool IncrementLabelMember( wxString& name, int aIncrement )
{
int ii, nn;
long number = 0;
if( name.IsEmpty() )
return true;
ii = name.Len() - 1;
nn = 0;
int ii = name.Len() - 1;
// No number found, but simply repeating the same label is valid
// Ignore formatting constructs
if( name.GetChar( ii ) == '}' )
ii--;
if( !wxIsdigit( name.GetChar( ii ) ) )
return true;
wxString digits;
while( ii >= 0 && wxIsdigit( name.GetChar( ii ) ) )
{
digits = name.GetChar( ii ) + digits;
ii--;
nn++;
}
ii++; /* digits are starting at ii position */
wxString litt_number = name.Right( nn );
if( digits.IsEmpty() )
return true;
long number = 0;
if( litt_number.ToLong( &number ) )
if( digits.ToLong( &number ) )
{
number += aIncrement;
@ -81,7 +83,7 @@ bool IncrementLabelMember( wxString& name, int aIncrement )
if( number > -1 )
{
name.Remove( ii );
name.Remove( ii + 1 );
name << number;
return true;
}

Loading…
Cancel
Save