diff --git a/eeschema/dialogs/dialog_change_symbols.cpp b/eeschema/dialogs/dialog_change_symbols.cpp index 3f5d0d0db5..60fc2f0a78 100644 --- a/eeschema/dialogs/dialog_change_symbols.cpp +++ b/eeschema/dialogs/dialog_change_symbols.cpp @@ -501,7 +501,7 @@ bool DIALOG_CHANGE_SYMBOLS::processSymbol( SCH_COMPONENT* aSymbol, SCH_SCREEN* a SCH_FIELD* field = aSymbol->GetField( (int) i ) ; LIB_FIELD* libField = nullptr; - if( alg::contains( m_updateFields, field->GetName() ) ) + if( !alg::contains( m_updateFields, field->GetName() ) ) continue; if( i < MANDATORY_FIELDS ) @@ -511,8 +511,15 @@ bool DIALOG_CHANGE_SYMBOLS::processSymbol( SCH_COMPONENT* aSymbol, SCH_SCREEN* a if( libField ) { - if( resetEmpty && libField->GetText().IsEmpty() ) - field->SetText( wxEmptyString ); + if( libField->GetText().IsEmpty() ) + { + if( resetEmpty ) + field->SetText( wxEmptyString ); + } + else + { + field->SetText( libField->GetText() ); + } if( resetVis ) field->SetVisible( libField->IsVisible() );