Get fields out of SYMBOL, not LIB_PART.
Also make sure the match-mode is initialised before we try and fetch all the field names. Fixes https://gitlab.com/kicad/code/kicad/issues/6589
This commit is contained in:
parent
d8fa37d5c2
commit
3d7c26b6bd
|
@ -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<SCH_FIELD>& fields = symbol->GetFields();
|
||||
|
||||
if( !libSymbol )
|
||||
continue;
|
||||
|
||||
std::unique_ptr<LIB_PART> 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() );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue