mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-09-13 17:53:11 +02:00
Prevent backannotation from changing variables
Updating to PCB always resolves text variables from the schematic. This means that back annotation will always start from resolved variables if they exist in the schematic. So to avoid this, we prevent overwriting any text variables that exist in the schematic. This does prevent the user from updating a text variable in a pcbnew field and backannotating this variable change into the schematic where the schematic had a text variable already. Text variables are forward annotation only until we add an additional property to each field to include the unresolved text Fixes https://gitlab.com/kicad/code/kicad/issues/21724
This commit is contained in:
parent
accbee3c6e
commit
56ad08cdd8
@ -384,7 +384,8 @@ void BACK_ANNOTATE::applyChangelist()
|
||||
if( !m_dryRun )
|
||||
commit.Modify( symbol, screen, RECURSE_MODE::NO_RECURSE );
|
||||
|
||||
if( m_processReferences && ref.GetRef() != fpData.m_ref && !skip )
|
||||
if( m_processReferences && ref.GetRef() != fpData.m_ref && !skip
|
||||
&& !symbol->GetField( FIELD_T::REFERENCE )->HasTextVars() )
|
||||
{
|
||||
++m_changesCount;
|
||||
msg.Printf( _( "Change %s reference designator to '%s'." ),
|
||||
@ -397,7 +398,8 @@ void BACK_ANNOTATE::applyChangelist()
|
||||
m_reporter.ReportHead( msg, RPT_SEVERITY_ACTION );
|
||||
}
|
||||
|
||||
if( m_processFootprints && oldFootprint != fpData.m_footprint && !skip )
|
||||
if( m_processFootprints && oldFootprint != fpData.m_footprint && !skip
|
||||
&& !symbol->GetField( FIELD_T::FOOTPRINT )->HasTextVars() )
|
||||
{
|
||||
++m_changesCount;
|
||||
msg.Printf( _( "Change %s footprint assignment from '%s' to '%s'." ),
|
||||
@ -411,7 +413,8 @@ void BACK_ANNOTATE::applyChangelist()
|
||||
m_reporter.ReportHead( msg, RPT_SEVERITY_ACTION );
|
||||
}
|
||||
|
||||
if( m_processValues && oldValue != fpData.m_value && !skip )
|
||||
if( m_processValues && oldValue != fpData.m_value && !skip
|
||||
&& !symbol->GetField( FIELD_T::VALUE )->HasTextVars() )
|
||||
{
|
||||
++m_changesCount;
|
||||
msg.Printf( _( "Change %s value from '%s' to '%s'." ),
|
||||
@ -502,6 +505,7 @@ void BACK_ANNOTATE::applyChangelist()
|
||||
// with all the variables resolved. The footprints field value gets the symbol's
|
||||
// resolved value when the PCB is updated from the schematic.
|
||||
if( symField
|
||||
&& !symField->HasTextVars()
|
||||
&& symField->GetShownText( &ref.GetSheetPath(), false ) != fpFieldValue )
|
||||
{
|
||||
m_changesCount++;
|
||||
|
Loading…
x
Reference in New Issue
Block a user