From c6606a05829814935862ec2cf2694b15fb39ee35 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Sat, 19 Jun 2021 11:36:37 +0100 Subject: [PATCH] Hook up delete to undo last segment when routing. Fixes https://gitlab.com/kicad/code/kicad/issues/8362 --- pcbnew/router/router_tool.cpp | 42 +++++++++++++++-------------------- pcbnew/tools/edit_tool.cpp | 2 +- pcbnew/tools/pcb_actions.cpp | 6 +++++ 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/pcbnew/router/router_tool.cpp b/pcbnew/router/router_tool.cpp index c6bb5a3472..26f235a00d 100644 --- a/pcbnew/router/router_tool.cpp +++ b/pcbnew/router/router_tool.cpp @@ -83,12 +83,6 @@ enum VIA_ACTION_FLAGS #undef _ #define _(s) s -static const TOOL_ACTION ACT_UndoLastSegment( "pcbnew.InteractiveRouter.UndoLastSegment", - AS_CONTEXT, - WXK_BACK, "", - _( "Undo last segment" ), _( "Stops laying the current track." ), - BITMAPS::checked_ok ); - static const TOOL_ACTION ACT_EndTrack( "pcbnew.InteractiveRouter.EndTrack", AS_CONTEXT, WXK_END, "", @@ -447,23 +441,23 @@ bool ROUTER_TOOL::Init() menu.AddSeparator(); - menu.AddItem( PCB_ACTIONS::routeSingleTrack, notRoutingCond ); - menu.AddItem( PCB_ACTIONS::routeDiffPair, notRoutingCond ); - menu.AddItem( ACT_EndTrack, SELECTION_CONDITIONS::ShowAlways ); - menu.AddItem( ACT_UndoLastSegment, SELECTION_CONDITIONS::ShowAlways ); - menu.AddItem( PCB_ACTIONS::breakTrack, notRoutingCond ); + menu.AddItem( PCB_ACTIONS::routeSingleTrack, notRoutingCond ); + menu.AddItem( PCB_ACTIONS::routeDiffPair, notRoutingCond ); + menu.AddItem( ACT_EndTrack, SELECTION_CONDITIONS::ShowAlways ); + menu.AddItem( PCB_ACTIONS::routerUndoLastSegment, SELECTION_CONDITIONS::ShowAlways ); + menu.AddItem( PCB_ACTIONS::breakTrack, notRoutingCond ); - menu.AddItem( PCB_ACTIONS::drag45Degree, notRoutingCond ); - menu.AddItem( PCB_ACTIONS::dragFreeAngle, notRoutingCond ); + menu.AddItem( PCB_ACTIONS::drag45Degree, notRoutingCond ); + menu.AddItem( PCB_ACTIONS::dragFreeAngle, notRoutingCond ); // Add( ACT_AutoEndRoute ); // fixme: not implemented yet. Sorry. - menu.AddItem( ACT_PlaceThroughVia, SELECTION_CONDITIONS::ShowAlways ); - menu.AddItem( ACT_PlaceBlindVia, SELECTION_CONDITIONS::ShowAlways ); - menu.AddItem( ACT_PlaceMicroVia, SELECTION_CONDITIONS::ShowAlways ); - menu.AddItem( ACT_SelLayerAndPlaceThroughVia, SELECTION_CONDITIONS::ShowAlways ); - menu.AddItem( ACT_SelLayerAndPlaceBlindVia, SELECTION_CONDITIONS::ShowAlways ); - menu.AddItem( ACT_SwitchPosture, SELECTION_CONDITIONS::ShowAlways ); - menu.AddItem( ACT_SwitchRounding, SELECTION_CONDITIONS::ShowAlways ); + menu.AddItem( ACT_PlaceThroughVia, SELECTION_CONDITIONS::ShowAlways ); + menu.AddItem( ACT_PlaceBlindVia, SELECTION_CONDITIONS::ShowAlways ); + menu.AddItem( ACT_PlaceMicroVia, SELECTION_CONDITIONS::ShowAlways ); + menu.AddItem( ACT_SelLayerAndPlaceThroughVia, SELECTION_CONDITIONS::ShowAlways ); + menu.AddItem( ACT_SelLayerAndPlaceBlindVia, SELECTION_CONDITIONS::ShowAlways ); + menu.AddItem( ACT_SwitchPosture, SELECTION_CONDITIONS::ShowAlways ); + menu.AddItem( ACT_SwitchRounding, SELECTION_CONDITIONS::ShowAlways ); menu.AddSeparator(); @@ -473,10 +467,10 @@ bool ROUTER_TOOL::Init() return m_router->Mode() == PNS::PNS_MODE_ROUTE_DIFF_PAIR; }; - menu.AddMenu( m_trackViaMenu.get(), SELECTION_CONDITIONS::ShowAlways ); - menu.AddMenu( m_diffPairMenu.get(), diffPairCond ); + menu.AddMenu( m_trackViaMenu.get(), SELECTION_CONDITIONS::ShowAlways ); + menu.AddMenu( m_diffPairMenu.get(), diffPairCond ); - menu.AddItem( PCB_ACTIONS::routerSettingsDialog, SELECTION_CONDITIONS::ShowAlways ); + menu.AddItem( PCB_ACTIONS::routerSettingsDialog, SELECTION_CONDITIONS::ShowAlways ); menu.AddSeparator(); @@ -1109,7 +1103,7 @@ void ROUTER_TOOL::performRouting() updateEndItem( *evt ); m_router->Move( m_endSnapPoint, m_endItem ); } - else if( evt->IsAction( &ACT_UndoLastSegment ) ) + else if( evt->IsAction( &PCB_ACTIONS::routerUndoLastSegment ) ) { m_router->UndoLastSegment(); updateEndItem( *evt ); diff --git a/pcbnew/tools/edit_tool.cpp b/pcbnew/tools/edit_tool.cpp index ec8fc7b909..8238bb4acc 100644 --- a/pcbnew/tools/edit_tool.cpp +++ b/pcbnew/tools/edit_tool.cpp @@ -1711,7 +1711,7 @@ int EDIT_TOOL::Remove( const TOOL_EVENT& aEvent ) { if( isRouterActive() ) { - wxBell(); + m_toolMgr->RunAction( PCB_ACTIONS::routerUndoLastSegment, true ); return 0; } diff --git a/pcbnew/tools/pcb_actions.cpp b/pcbnew/tools/pcb_actions.cpp index bb29553b49..72ed1ca866 100644 --- a/pcbnew/tools/pcb_actions.cpp +++ b/pcbnew/tools/pcb_actions.cpp @@ -1349,6 +1349,12 @@ TOOL_ACTION PCB_ACTIONS::routerTuneDiffPairSkew( "pcbnew.LengthTuner.TuneDiffPai TOOL_ACTION PCB_ACTIONS::routerInlineDrag( "pcbnew.InteractiveRouter.InlineDrag", AS_CONTEXT ); +TOOL_ACTION PCB_ACTIONS::routerUndoLastSegment( "pcbnew.InteractiveRouter.UndoLastSegment", + AS_CONTEXT, + WXK_BACK, "", + _( "Undo Last Segment" ), _( "Walks the current track back one segment." ), + BITMAPS::checked_ok ); + TOOL_ACTION PCB_ACTIONS::inlineBreakTrack( "pcbnew.InteractiveRouter.InlineBreakTrack", AS_GLOBAL, 0, "", _( "Break Track" ),