diff --git a/eeschema/dialogs/dialog_change_symbols.cpp b/eeschema/dialogs/dialog_change_symbols.cpp index 57865af458..2eae67e6f2 100644 --- a/eeschema/dialogs/dialog_change_symbols.cpp +++ b/eeschema/dialogs/dialog_change_symbols.cpp @@ -101,8 +101,6 @@ DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS( SCH_EDIT_FRAME* aParent, SCH_COMPO m_fieldsBox->Check( i, true ); } - updateFieldsList(); - m_messagePanel->SetLazyUpdate( true ); if( aSymbol && aSymbol->IsSelected() ) @@ -117,6 +115,8 @@ DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS( SCH_EDIT_FRAME* aParent, SCH_COMPO m_matchByReference->SetValue( true ); } + updateFieldsList(); + if( m_mode == MODE::CHANGE ) { m_updateFieldsSizer->GetStaticBox()->SetLabel( _( "Update Fields") ); @@ -269,18 +269,10 @@ void DIALOG_CHANGE_SYMBOLS::updateFieldsList() if( !isMatch( symbol, &instance ) ) continue; - LIB_PART* libSymbol = frame->GetLibPart( symbol->GetLibId() ); + std::vector& fields = symbol->GetFields(); - if( !libSymbol ) - continue; - - std::unique_ptr flattenedSymbol = libSymbol->Flatten(); - - LIB_FIELDS libFields; - flattenedSymbol->GetFields( libFields ); - - for( unsigned i = MANDATORY_FIELDS; i < libFields.size(); ++i ) - fieldNames.insert( libFields[i].GetName() ); + for( unsigned i = MANDATORY_FIELDS; i < fields.size(); ++i ) + fieldNames.insert( fields[i].GetName() ); } }