From 0ef63aca4766c93ef86a9c03bea6c93bc49cdbcc Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Fri, 11 Dec 2020 17:54:55 +0000 Subject: [PATCH] Don't reset tail when changing track width/via sizes. Fixes https://gitlab.com/kicad/code/kicad/issues/6314 --- pcbnew/router/pns_line.h | 3 +++ pcbnew/router/pns_line_placer.cpp | 19 ++++++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/pcbnew/router/pns_line.h b/pcbnew/router/pns_line.h index af98df5e0b..c3170332fb 100644 --- a/pcbnew/router/pns_line.h +++ b/pcbnew/router/pns_line.h @@ -238,6 +238,9 @@ public: const VIA& Via() const { return m_via; } + void SetViaDiameter( int aDiameter ) { m_via.SetDiameter( aDiameter ); } + void SetViaDrill( int aDrill ) { m_via.SetDrill( aDrill ); } + virtual void Mark( int aMarker ) const override; virtual void Unmark( int aMarker = -1 ) const override; virtual int Marker() const override; diff --git a/pcbnew/router/pns_line_placer.cpp b/pcbnew/router/pns_line_placer.cpp index f5f936d460..7692116c65 100644 --- a/pcbnew/router/pns_line_placer.cpp +++ b/pcbnew/router/pns_line_placer.cpp @@ -1342,14 +1342,19 @@ void LINE_PLACER::simplifyNewLine( NODE* aNode, SEGMENT* aLatest ) void LINE_PLACER::UpdateSizes( const SIZES_SETTINGS& aSizes ) { - // initPlacement will kill the tail, don't do that unless the track size has changed - if( !m_idle && aSizes.TrackWidth() != m_sizes.TrackWidth() ) - { - m_sizes = aSizes; - initPlacement(); - } - m_sizes = aSizes; + + if( !m_idle ) + { + m_head.SetWidth( m_sizes.TrackWidth() ); + m_tail.SetWidth( m_sizes.TrackWidth() ); + + if( m_head.EndsWithVia() ) + { + m_head.SetViaDiameter( m_sizes.ViaDiameter() ); + m_head.SetViaDrill( m_sizes.ViaDrill() ); + } + } }