diff --git a/eeschema/dialogs/dialog_change_symbols.cpp b/eeschema/dialogs/dialog_change_symbols.cpp index 1e9322cc42..1193d40795 100644 --- a/eeschema/dialogs/dialog_change_symbols.cpp +++ b/eeschema/dialogs/dialog_change_symbols.cpp @@ -385,13 +385,22 @@ void DIALOG_CHANGE_SYMBOLS::onOkButtonClicked( wxCommandEvent& aEvent ) m_messagePanel->Clear(); m_messagePanel->Flush( false ); - // Create the set of fields to be updated + // Create the set of fields to be updated. Use non translated (canonical) names + // for mandatory fields m_updateFields.clear(); for( unsigned i = 0; i < m_fieldsBox->GetCount(); ++i ) { if( m_fieldsBox->IsChecked( i ) ) - m_updateFields.insert( m_fieldsBox->GetString( i ) ); + { + if( i < MANDATORY_FIELDS ) + { + LIB_FIELD dummy_field( i ); + m_updateFields.insert( dummy_field.GetCanonicalName() ); + } + else + m_updateFields.insert( m_fieldsBox->GetString( i ) ); + } } if( processMatchingSymbols() ) @@ -602,8 +611,8 @@ bool DIALOG_CHANGE_SYMBOLS::processSymbol( SCH_SYMBOL* aSymbol, const SCH_SHEET_ LIB_FIELD* libField = nullptr; // Mandatory fields always exist in m_updateFields, but these names can be translated. - // so do not try to search them in list: they can be no found by name). - if( i >= MANDATORY_FIELDS && !alg::contains( m_updateFields, field.GetName() ) ) + // so use GetCanonicalName(). + if( !alg::contains( m_updateFields, field.GetCanonicalName() ) ) continue; if( i < MANDATORY_FIELDS ) @@ -660,7 +669,7 @@ bool DIALOG_CHANGE_SYMBOLS::processSymbol( SCH_SYMBOL* aSymbol, const SCH_SHEET_ { const LIB_FIELD& libField = *libFields[i]; - if( !alg::contains( m_updateFields, libField.GetName() ) ) + if( !alg::contains( m_updateFields, libField.GetCanonicalName() ) ) continue; if( !aSymbol->FindField( libField.GetName(), false ) )