diff --git a/pcbnew/generators/pcb_tuning_pattern.cpp b/pcbnew/generators/pcb_tuning_pattern.cpp index e6602db640..1a5896fb8b 100644 --- a/pcbnew/generators/pcb_tuning_pattern.cpp +++ b/pcbnew/generators/pcb_tuning_pattern.cpp @@ -505,6 +505,8 @@ void PCB_TUNING_PATTERN::EditStart( GENERATOR_TOOL* aTool, BOARD* aBoard, aCommit->Modify( this ); } + SetFlags( IS_MOVING ); + int layer = GetLayer(); PNS::ROUTER* router = aTool->Router(); diff --git a/pcbnew/router/pns_kicad_iface.cpp b/pcbnew/router/pns_kicad_iface.cpp index 76b9ce1be5..7f5576372a 100644 --- a/pcbnew/router/pns_kicad_iface.cpp +++ b/pcbnew/router/pns_kicad_iface.cpp @@ -1155,9 +1155,15 @@ std::unique_ptr PNS_KICAD_IFACE_BASE::syncTrack( PCB_TRACK* aTrack segment->SetLayers( LAYER_RANGE( aTrack->GetLayer() ) ); segment->SetParent( aTrack ); - if( aTrack->IsLocked() || dynamic_cast( aTrack->GetParentGroup() ) ) + if( aTrack->IsLocked() ) segment->Mark( PNS::MK_LOCKED ); + if( PCB_GENERATOR* generator = dynamic_cast( aTrack->GetParentGroup() ) ) + { + if( !generator->IsMoving() ) + segment->Mark( PNS::MK_LOCKED ); + } + return segment; } @@ -1171,9 +1177,15 @@ std::unique_ptr PNS_KICAD_IFACE_BASE::syncArc( PCB_ARC* aArc ) arc->SetLayers( LAYER_RANGE( aArc->GetLayer() ) ); arc->SetParent( aArc ); - if( aArc->IsLocked() || dynamic_cast( aArc->GetParentGroup() ) ) + if( aArc->IsLocked() ) arc->Mark( PNS::MK_LOCKED ); + if( PCB_GENERATOR* generator = dynamic_cast( aArc->GetParentGroup() ) ) + { + if( !generator->IsMoving() ) + arc->Mark( PNS::MK_LOCKED ); + } + return arc; } @@ -1192,9 +1204,15 @@ std::unique_ptr PNS_KICAD_IFACE_BASE::syncVia( PCB_VIA* aVia ) via->SetParent( aVia ); - if( aVia->IsLocked() || dynamic_cast( aVia->GetParentGroup() ) ) + if( aVia->IsLocked() ) via->Mark( PNS::MK_LOCKED ); + if( PCB_GENERATOR* generator = dynamic_cast( aVia->GetParentGroup() ) ) + { + if( !generator->IsMoving() ) + via->Mark( PNS::MK_LOCKED ); + } + via->SetIsFree( aVia->GetIsFree() ); via->SetHole( PNS::HOLE::MakeCircularHole( aVia->GetPosition(), aVia->GetDrillValue() / 2 ) );