From 111d0a2c145984178523e90dae9d9717b7ce5589 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Sat, 10 Jun 2023 17:47:20 +0100 Subject: [PATCH] Check for proxy references and values in Selectable(). Fixes https://gitlab.com/kicad/code/kicad/-/issues/14911 --- pcbnew/tools/pcb_selection_tool.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/pcbnew/tools/pcb_selection_tool.cpp b/pcbnew/tools/pcb_selection_tool.cpp index fd8341d24c..38afcfaacb 100644 --- a/pcbnew/tools/pcb_selection_tool.cpp +++ b/pcbnew/tools/pcb_selection_tool.cpp @@ -2510,9 +2510,23 @@ bool PCB_SELECTION_TOOL::Selectable( const BOARD_ITEM* aItem, bool checkVisibili switch( text->GetType() ) { - case PCB_TEXT::TEXT_is_REFERENCE: controlLayer = LAYER_MOD_REFERENCES; break; - case PCB_TEXT::TEXT_is_VALUE: controlLayer = LAYER_MOD_VALUES; break; - case PCB_TEXT::TEXT_is_DIVERS: controlLayer = LAYER_MOD_TEXT; break; + case PCB_TEXT::TEXT_is_REFERENCE: + controlLayer = LAYER_MOD_REFERENCES; + break; + + case PCB_TEXT::TEXT_is_VALUE: + controlLayer = LAYER_MOD_VALUES; + break; + + case PCB_TEXT::TEXT_is_DIVERS: + if( text->GetText() == wxT( "${REFERENCE}" ) ) + controlLayer = LAYER_MOD_REFERENCES; + else if( text->GetText() == wxT( "${VALUE}" ) ) + controlLayer = LAYER_MOD_VALUES; + else + controlLayer = LAYER_MOD_TEXT; + + break; } if( controlLayer == UNDEFINED_LAYER )