Lock track width after placing segment

We don't want to allow the full track width to change after placing a
segment when we are in follow-segment mode. This would require either
ripping up and re-solving the existing track or allowing potential DRC
errors.

Fixes https://gitlab.com/kicad/code/kicad/issues/9395
This commit is contained in:
Seth Hillbrand 2021-10-14 09:19:39 -07:00
parent c61af21da8
commit faba2b06c2
1 changed files with 5 additions and 1 deletions

View File

@ -1612,10 +1612,14 @@ void LINE_PLACER::UpdateSizes( const SIZES_SETTINGS& aSizes )
if( !m_idle ) if( !m_idle )
{ {
// If the track width continues from an existing track, we don't want to change the width. // If the track width continues from an existing track, we don't want to change the width.
if( m_sizes.TrackWidthIsExplicit() || m_startItem->Kind() != ITEM::SEGMENT_T ) // Disallow changing width after the first segment has been fixed because we don't want to
// go back and rip up tracks or allow DRC errors
if( m_sizes.TrackWidthIsExplicit() || ( !HasPlacedAnything()
&& ( !m_startItem || m_startItem->Kind() != ITEM::SEGMENT_T ) ) )
{ {
m_head.SetWidth( m_sizes.TrackWidth() ); m_head.SetWidth( m_sizes.TrackWidth() );
m_tail.SetWidth( m_sizes.TrackWidth() ); m_tail.SetWidth( m_sizes.TrackWidth() );
m_currentTrace.SetWidth( m_sizes.TrackWidth() );
} }
if( m_head.EndsWithVia() ) if( m_head.EndsWithVia() )