From 45b2bce69849e7081323f072019c9fc9fa345270 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Thu, 18 Feb 2021 11:50:37 +0000 Subject: [PATCH] Cancel placement of via if user cancels layer selection. Fixes https://gitlab.com/kicad/code/kicad/issues/7578 --- pcbnew/router/router_tool.cpp | 3 +++ pcbnew/sel_layer.cpp | 11 +++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/pcbnew/router/router_tool.cpp b/pcbnew/router/router_tool.cpp index a704f0d812..4e2754231a 100644 --- a/pcbnew/router/router_tool.cpp +++ b/pcbnew/router/router_tool.cpp @@ -761,6 +761,9 @@ int ROUTER_TOOL::handleLayerSwitch( const TOOL_EVENT& aEvent, bool aForceVia ) } } + if( targetLayer == UNDEFINED_LAYER ) + return 0; + // fixme: P&S supports more than one fixed layer pair. Update the dialog? sizes.ClearLayerPairs(); diff --git a/pcbnew/sel_layer.cpp b/pcbnew/sel_layer.cpp index 6e8153abc0..e3d74633dc 100644 --- a/pcbnew/sel_layer.cpp +++ b/pcbnew/sel_layer.cpp @@ -222,8 +222,7 @@ void PCB_ONE_LAYER_SELECTOR::OnRightGridCellClick( wxGridEvent& event ) } -PCB_LAYER_ID PCB_BASE_FRAME::SelectOneLayer( PCB_LAYER_ID aDefaultLayer, - LSET aNotAllowedLayersMask, +PCB_LAYER_ID PCB_BASE_FRAME::SelectOneLayer( PCB_LAYER_ID aDefaultLayer, LSET aNotAllowedLayersMask, wxPoint aDlgPosition ) { PCB_ONE_LAYER_SELECTOR dlg( this, GetBoard(), aDefaultLayer, aNotAllowedLayersMask ); @@ -236,10 +235,10 @@ PCB_LAYER_ID PCB_BASE_FRAME::SelectOneLayer( PCB_LAYER_ID aDefaultLayer, dlg.SetPosition( aDlgPosition ); } - dlg.ShowModal(); - - PCB_LAYER_ID layer = ToLAYER_ID( dlg.GetLayerSelection() ); - return layer; + if( dlg.ShowModal() != wxID_CANCEL ) + return ToLAYER_ID( dlg.GetLayerSelection() ); + else + return UNDEFINED_LAYER; }