From 17a37a55f0b41ce4514217c6ef676533689c70f8 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Sun, 18 Feb 2024 21:43:27 +0000 Subject: [PATCH] When updating RefDes only update the prefix. Fixes https://gitlab.com/kicad/code/kicad/-/issues/16991 (cherry picked from commit b6036f368e1bff785f659e9e4e95e73f9ada5458) --- eeschema/dialogs/dialog_change_symbols.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/eeschema/dialogs/dialog_change_symbols.cpp b/eeschema/dialogs/dialog_change_symbols.cpp index 255a080189..968821bf54 100644 --- a/eeschema/dialogs/dialog_change_symbols.cpp +++ b/eeschema/dialogs/dialog_change_symbols.cpp @@ -650,10 +650,19 @@ int DIALOG_CHANGE_SYMBOLS::processSymbols( SCH_COMMIT* aCommit, { if( i == REFERENCE_FIELD ) { + wxString prefix = UTIL::GetRefDesPrefix( libField->GetText() ); + for( const SCH_SHEET_PATH& instance : symbol_change_info.m_Instances ) { - symbol->SetRef( &instance, - UTIL::GetRefDesUnannotated( libField->GetText() ) ); + wxString ref = symbol->GetRef( &instance, true ); + int number = UTIL::GetRefDesNumber( ref ); + + if( number >= 0 ) + ref.Printf( wxS( "%s%d" ), prefix, number ); + else + ref = UTIL::GetRefDesUnannotated( prefix ); + + symbol->SetRef( &instance, ref ); } } else if( i == VALUE_FIELD )