pcbnew: Cancel highlight with ESC
When editing the pcb, Ctrl-Click will highlight a net. This allows
de-highlight with the ESC/cancel action from the selection tool. Inside
the highlight tool, ESC reverts to the selection tool while keeping the
net highlighted.
Fixes: lp:1793842
* https://bugs.launchpad.net/kicad/+bug/1793842
(cherry picked from commit 518b53f78c
)
This commit is contained in:
parent
3f58dce1de
commit
5ce0c2065c
|
@ -382,6 +382,7 @@ public:
|
||||||
static TOOL_ACTION switchCursor;
|
static TOOL_ACTION switchCursor;
|
||||||
static TOOL_ACTION switchUnits;
|
static TOOL_ACTION switchUnits;
|
||||||
static TOOL_ACTION deleteItemCursor;
|
static TOOL_ACTION deleteItemCursor;
|
||||||
|
static TOOL_ACTION clearHighlight;
|
||||||
static TOOL_ACTION highlightNet;
|
static TOOL_ACTION highlightNet;
|
||||||
static TOOL_ACTION highlightNetCursor;
|
static TOOL_ACTION highlightNetCursor;
|
||||||
static TOOL_ACTION highlightNetSelection;
|
static TOOL_ACTION highlightNetSelection;
|
||||||
|
|
|
@ -96,7 +96,6 @@ TOOL_ACTION PCB_ACTIONS::zoneDuplicate( "pcbnew.EditorControl.zoneDuplicate",
|
||||||
_( "Duplicate Zone onto Layer..." ), _( "Duplicate zone outline onto a different layer" ),
|
_( "Duplicate Zone onto Layer..." ), _( "Duplicate zone outline onto a different layer" ),
|
||||||
zone_duplicate_xpm );
|
zone_duplicate_xpm );
|
||||||
|
|
||||||
|
|
||||||
TOOL_ACTION PCB_ACTIONS::placeTarget( "pcbnew.EditorControl.placeTarget",
|
TOOL_ACTION PCB_ACTIONS::placeTarget( "pcbnew.EditorControl.placeTarget",
|
||||||
AS_GLOBAL, 0,
|
AS_GLOBAL, 0,
|
||||||
_( "Add Layer Alignment Target" ), _( "Add a layer alignment target" ), NULL, AF_ACTIVATE );
|
_( "Add Layer Alignment Target" ), _( "Add a layer alignment target" ), NULL, AF_ACTIVATE );
|
||||||
|
@ -133,6 +132,10 @@ TOOL_ACTION PCB_ACTIONS::highlightNet( "pcbnew.EditorControl.highlightNet",
|
||||||
AS_GLOBAL, 0,
|
AS_GLOBAL, 0,
|
||||||
"", "" );
|
"", "" );
|
||||||
|
|
||||||
|
TOOL_ACTION PCB_ACTIONS::clearHighlight( "pcbnew.EditorControl.clearHighlight",
|
||||||
|
AS_GLOBAL, 0,
|
||||||
|
"", "" );
|
||||||
|
|
||||||
TOOL_ACTION PCB_ACTIONS::highlightNetCursor( "pcbnew.EditorControl.highlightNetCursor",
|
TOOL_ACTION PCB_ACTIONS::highlightNetCursor( "pcbnew.EditorControl.highlightNetCursor",
|
||||||
AS_GLOBAL, 0,
|
AS_GLOBAL, 0,
|
||||||
"", "" );
|
"", "" );
|
||||||
|
@ -1020,6 +1023,21 @@ int PCB_EDITOR_CONTROL::HighlightNet( const TOOL_EVENT& aEvent )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int PCB_EDITOR_CONTROL::ClearHighlight( const TOOL_EVENT& aEvent )
|
||||||
|
{
|
||||||
|
auto frame = static_cast<PCB_EDIT_FRAME*>( m_toolMgr->GetEditFrame() );
|
||||||
|
auto board = static_cast<BOARD*>( m_toolMgr->GetModel() );
|
||||||
|
KIGFX::RENDER_SETTINGS* render = m_toolMgr->GetView()->GetPainter()->GetSettings();
|
||||||
|
|
||||||
|
board->ResetHighLight();
|
||||||
|
render->SetHighlight( false );
|
||||||
|
m_toolMgr->GetView()->UpdateAllLayersColor();
|
||||||
|
frame->SetMsgPanel( board );
|
||||||
|
frame->SendCrossProbeNetName( "" );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int PCB_EDITOR_CONTROL::HighlightNetCursor( const TOOL_EVENT& aEvent )
|
int PCB_EDITOR_CONTROL::HighlightNetCursor( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
// If the keyboard hotkey was triggered, the behavior is as follows:
|
// If the keyboard hotkey was triggered, the behavior is as follows:
|
||||||
|
@ -1199,6 +1217,7 @@ void PCB_EDITOR_CONTROL::setTransitions()
|
||||||
Go( &PCB_EDITOR_CONTROL::CrossProbeSchToPcb, PCB_ACTIONS::crossProbeSchToPcb.MakeEvent() );
|
Go( &PCB_EDITOR_CONTROL::CrossProbeSchToPcb, PCB_ACTIONS::crossProbeSchToPcb.MakeEvent() );
|
||||||
Go( &PCB_EDITOR_CONTROL::DrillOrigin, PCB_ACTIONS::drillOrigin.MakeEvent() );
|
Go( &PCB_EDITOR_CONTROL::DrillOrigin, PCB_ACTIONS::drillOrigin.MakeEvent() );
|
||||||
Go( &PCB_EDITOR_CONTROL::HighlightNet, PCB_ACTIONS::highlightNet.MakeEvent() );
|
Go( &PCB_EDITOR_CONTROL::HighlightNet, PCB_ACTIONS::highlightNet.MakeEvent() );
|
||||||
|
Go( &PCB_EDITOR_CONTROL::ClearHighlight, PCB_ACTIONS::clearHighlight.MakeEvent() );
|
||||||
Go( &PCB_EDITOR_CONTROL::HighlightNetCursor, PCB_ACTIONS::highlightNetCursor.MakeEvent() );
|
Go( &PCB_EDITOR_CONTROL::HighlightNetCursor, PCB_ACTIONS::highlightNetCursor.MakeEvent() );
|
||||||
Go( &PCB_EDITOR_CONTROL::HighlightNetCursor, PCB_ACTIONS::highlightNetSelection.MakeEvent() );
|
Go( &PCB_EDITOR_CONTROL::HighlightNetCursor, PCB_ACTIONS::highlightNetSelection.MakeEvent() );
|
||||||
Go( &PCB_EDITOR_CONTROL::ShowLocalRatsnest, PCB_ACTIONS::showLocalRatsnest.MakeEvent() );
|
Go( &PCB_EDITOR_CONTROL::ShowLocalRatsnest, PCB_ACTIONS::showLocalRatsnest.MakeEvent() );
|
||||||
|
|
|
@ -104,6 +104,9 @@ public:
|
||||||
///> Highlights net belonging to the item under the cursor.
|
///> Highlights net belonging to the item under the cursor.
|
||||||
int HighlightNet( const TOOL_EVENT& aEvent );
|
int HighlightNet( const TOOL_EVENT& aEvent );
|
||||||
|
|
||||||
|
///> Clears all board highlights
|
||||||
|
int ClearHighlight( const TOOL_EVENT& aEvent );
|
||||||
|
|
||||||
///> Launches a tool to pick the item whose net is going to be highlighted.
|
///> Launches a tool to pick the item whose net is going to be highlighted.
|
||||||
int HighlightNetCursor( const TOOL_EVENT& aEvent );
|
int HighlightNetCursor( const TOOL_EVENT& aEvent );
|
||||||
|
|
||||||
|
|
|
@ -355,6 +355,9 @@ int SELECTION_TOOL::Main( const TOOL_EVENT& aEvent )
|
||||||
else if( evt->IsCancel() || evt->Action() == TA_UNDO_REDO_PRE )
|
else if( evt->IsCancel() || evt->Action() == TA_UNDO_REDO_PRE )
|
||||||
{
|
{
|
||||||
clearSelection();
|
clearSelection();
|
||||||
|
|
||||||
|
if( evt->IsCancel() && !m_editModules )
|
||||||
|
m_toolMgr->RunAction( PCB_ACTIONS::clearHighlight, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
else if( evt->Action() == TA_CONTEXT_MENU_CLOSED )
|
else if( evt->Action() == TA_CONTEXT_MENU_CLOSED )
|
||||||
|
|
|
@ -281,6 +281,10 @@ TOOL_ACTION PCB_ACTIONS::highlightNet( "pcbnew.EditorControl.highlightNet",
|
||||||
AS_GLOBAL, 0,
|
AS_GLOBAL, 0,
|
||||||
"", "" );
|
"", "" );
|
||||||
|
|
||||||
|
TOOL_ACTION PCB_ACTIONS::clearHighlight( "pcbnew.EditorControl.clearHighlight",
|
||||||
|
AS_GLOBAL, 0,
|
||||||
|
"", "" );
|
||||||
|
|
||||||
|
|
||||||
DIALOG_BLOCK_OPTIONS_BASE::DIALOG_BLOCK_OPTIONS_BASE( wxWindow* parent,
|
DIALOG_BLOCK_OPTIONS_BASE::DIALOG_BLOCK_OPTIONS_BASE( wxWindow* parent,
|
||||||
wxWindowID id,
|
wxWindowID id,
|
||||||
|
|
Loading…
Reference in New Issue