Fix a potential incompatibility (due to an old bug) with files which could be created by some recent pcbnew versions

It is unusual to fix an incompatibility with later versions, but it is due to a bug existing in this version,
and this is especially important for footprint files.
This commit is contained in:
jean-pierre charras 2017-01-28 08:47:40 +01:00
parent 556be7b431
commit df191606ab
1 changed files with 26 additions and 11 deletions

View File

@ -248,10 +248,8 @@ void PCB_PARSER::parseEDA_TEXT( EDA_TEXT* aText ) throw( PARSE_ERROR, IO_ERROR )
for( token = NextTok(); token != T_RIGHT; token = NextTok() )
{
if( token != T_LEFT )
Expecting( T_LEFT );
token = NextTok();
if( token == T_LEFT )
token = NextTok();
switch( token )
{
@ -264,14 +262,14 @@ void PCB_PARSER::parseEDA_TEXT( EDA_TEXT* aText ) throw( PARSE_ERROR, IO_ERROR )
switch( token )
{
case T_size:
{
wxSize sz;
sz.SetHeight( parseBoardUnits( "text height" ) );
sz.SetWidth( parseBoardUnits( "text width" ) );
aText->SetSize( sz );
NeedRIGHT();
{
wxSize sz;
sz.SetHeight( parseBoardUnits( "text height" ) );
sz.SetWidth( parseBoardUnits( "text width" ) );
aText->SetSize( sz );
NeedRIGHT();
}
break;
}
case T_thickness:
aText->SetThickness( parseBoardUnits( "text thickness" ) );
@ -2058,6 +2056,23 @@ TEXTE_MODULE* PCB_PARSER::parseTEXTE_MODULE() throw( IO_ERROR, PARSE_ERROR )
case T_effects:
parseEDA_TEXT( (EDA_TEXT*) text.get() );
// Due to a double definition (a bug) of SetVisible (one in EDA_TEXT and
// one in TEXTE_MODULE), verify if the EDA_TEXT is set to invisible
// This allows compatibility with files which could be created
// by pcbnew version janv 25, 2017, which fix a old bug (this one)
// This compatibility is especially important for footprint files.
if( !text->EDA_TEXT::IsVisible() )
{
// Only if the EDA_TEXT visibility is false, set the
// TEXTE_MODULE visibility to false.
// in files created by 4.05 version and older, the EDA_TEXT
// visibility is always true (the default), due to this bug
text->SetVisible( false );
// If we want a full compatibiliy with previous stable version,
// this ugly workaround avoids writing "hide" token
// in "effects" section, when the file comes from some recent pcbnew version
text->EDA_TEXT::SetVisible( true );
}
break;
default: