Only update value on rename if it previously matched the symbol name.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/15621

(cherry picked from commit ee724f6a2b)
This commit is contained in:
Jeff Young 2023-09-12 15:50:35 +01:00
parent c3ee477a1b
commit 16f259da81
1 changed files with 11 additions and 19 deletions

View File

@ -355,23 +355,25 @@ int SYMBOL_EDITOR_CONTROL::RenameSymbol( const TOOL_EVENT& aEvent )
}
wxString oldName = symbolName;
LIB_SYMBOL* libSymbol = nullptr;
LIB_SYMBOL* libSymbol = libMgr.GetBufferedSymbol( oldName, libName );
bool isCurrentSymbol = editFrame->IsCurrentSymbol( libId );
if( editFrame->IsCurrentSymbol( libId ) )
{
// Update buffered copy
libSymbol = libMgr.GetBufferedSymbol( oldName, libName );
libSymbol->SetName( newName );
libSymbol->SetName( newName );
if( libSymbol->GetFieldById( VALUE_FIELD )->GetText() == oldName )
libSymbol->GetFieldById( VALUE_FIELD )->SetText( newName );
libMgr.UpdateSymbolAfterRename( libSymbol, newName, libName );
libMgr.UpdateSymbolAfterRename( libSymbol, newName, libName );
libMgr.SetSymbolModified( newName, libName );
// Now update canvasy copy
if( isCurrentSymbol )
{
libSymbol = editFrame->GetCurSymbol();
libSymbol->SetName( newName );
libSymbol->GetFieldById( VALUE_FIELD )->SetText( newName );
if( libSymbol->GetFieldById( VALUE_FIELD )->GetText() == oldName )
libSymbol->GetFieldById( VALUE_FIELD )->SetText( newName );
editFrame->RebuildView();
editFrame->OnModify();
@ -380,16 +382,6 @@ int SYMBOL_EDITOR_CONTROL::RenameSymbol( const TOOL_EVENT& aEvent )
// invalidate the view pointers by rebuilting the field table
editFrame->UpdateMsgPanel();
}
else
{
libSymbol = libMgr.GetBufferedSymbol( oldName, libName );
libSymbol->SetName( newName );
libSymbol->GetFieldById( VALUE_FIELD )->SetText( newName );
libMgr.UpdateSymbolAfterRename( libSymbol, newName, libName );
libMgr.SetSymbolModified( newName, libName );
}
wxDataViewItem treeItem = libMgr.GetAdapter()->FindItem( libId );
editFrame->UpdateLibraryTree( treeItem, libSymbol );