Browse Source

Check added fields only if all fields were checked before.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16408
newinvert
Jeff Young 2 years ago
parent
commit
7e72a53876
  1. 16
      eeschema/dialogs/dialog_change_symbols.cpp

16
eeschema/dialogs/dialog_change_symbols.cpp

@ -351,14 +351,26 @@ void DIALOG_CHANGE_SYMBOLS::updateFieldsList()
}
// Update the listbox widget
wxArrayInt checkedItems;
wxArrayString checkedNames;
m_fieldsBox->GetCheckedItems( checkedItems );
for( int i : checkedItems )
checkedNames.push_back( m_fieldsBox->GetString( i ) );
bool allChecked = checkedItems.size() == m_fieldsBox->GetCount();
for( unsigned i = m_fieldsBox->GetCount() - 1; i >= MANDATORY_FIELDS; --i )
m_fieldsBox->Delete( i );
for( const wxString& fieldName : fieldNames )
{
m_fieldsBox->Append( fieldName );
for( unsigned i = MANDATORY_FIELDS; i < m_fieldsBox->GetCount(); ++i )
m_fieldsBox->Check( i, true );
if( allChecked || alg::contains( checkedNames, fieldName ) )
m_fieldsBox->Check( m_fieldsBox->GetCount() - 1, true );
}
}

Loading…
Cancel
Save