From 059a95a2f216911e4de1016ebafbc466e4c05b1d Mon Sep 17 00:00:00 2001 From: Jeff Young <jeff@rokeby.ie> Date: Thu, 19 Oct 2023 11:38:26 +0100 Subject: [PATCH] Lock generated tracks when routing. Otherwise they lose their group status when being replaced by the router (even if they weren't otherwise modified). --- pcbnew/router/pns_kicad_iface.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pcbnew/router/pns_kicad_iface.cpp b/pcbnew/router/pns_kicad_iface.cpp index 084eb4963d..76b9ce1be5 100644 --- a/pcbnew/router/pns_kicad_iface.cpp +++ b/pcbnew/router/pns_kicad_iface.cpp @@ -28,6 +28,7 @@ #include <pcb_track.h> #include <zone.h> #include <pcb_shape.h> +#include <pcb_generator.h> #include <pcb_text.h> #include <board_commit.h> #include <layer_ids.h> @@ -1154,7 +1155,7 @@ std::unique_ptr<PNS::SEGMENT> PNS_KICAD_IFACE_BASE::syncTrack( PCB_TRACK* aTrack segment->SetLayers( LAYER_RANGE( aTrack->GetLayer() ) ); segment->SetParent( aTrack ); - if( aTrack->IsLocked() ) + if( aTrack->IsLocked() || dynamic_cast<PCB_GENERATOR*>( aTrack->GetParentGroup() ) ) segment->Mark( PNS::MK_LOCKED ); return segment; @@ -1170,7 +1171,7 @@ std::unique_ptr<PNS::ARC> PNS_KICAD_IFACE_BASE::syncArc( PCB_ARC* aArc ) arc->SetLayers( LAYER_RANGE( aArc->GetLayer() ) ); arc->SetParent( aArc ); - if( aArc->IsLocked() ) + if( aArc->IsLocked() || dynamic_cast<PCB_GENERATOR*>( aArc->GetParentGroup() ) ) arc->Mark( PNS::MK_LOCKED ); return arc; @@ -1191,7 +1192,7 @@ std::unique_ptr<PNS::VIA> PNS_KICAD_IFACE_BASE::syncVia( PCB_VIA* aVia ) via->SetParent( aVia ); - if( aVia->IsLocked() ) + if( aVia->IsLocked() || dynamic_cast<PCB_GENERATOR*>( aVia->GetParentGroup() ) ) via->Mark( PNS::MK_LOCKED ); via->SetIsFree( aVia->GetIsFree() ); @@ -1901,15 +1902,14 @@ BOARD_CONNECTED_ITEM* PNS_KICAD_IFACE::createBoardItem( PNS::ITEM* aItem ) void PNS_KICAD_IFACE::AddItem( PNS::ITEM* aItem ) { - BOARD_CONNECTED_ITEM* newBI = createBoardItem( aItem ); + BOARD_CONNECTED_ITEM* boardItem = createBoardItem( aItem ); - if( newBI ) + if( boardItem ) { - //newBI->SetLocalRatsnestVisible( m_dispOptions->m_ShowGlobalRatsnest ); - aItem->SetParent( newBI ); - newBI->ClearFlags(); + aItem->SetParent( boardItem ); + boardItem->ClearFlags(); - m_commit->Add( newBI ); + m_commit->Add( boardItem ); } } @@ -1937,7 +1937,7 @@ void PNS_KICAD_IFACE::Commit() m_fpOffsets.clear(); - m_commit->Push( _( "Interactive Router" ), m_commitFlags ); + m_commit->Push( _( "Routing" ), m_commitFlags ); m_commit = std::make_unique<BOARD_COMMIT>( m_tool ); }