Update pad layer testing for selectability.
My only guess is the old code predated the introduction of GetLayerSet(). In any case it was long-winded and still didn't catch the case of being on copper layers other than front or back (which might be hidden).
This commit is contained in:
parent
e0f08338a8
commit
9ea96ee64e
|
@ -1921,32 +1921,7 @@ bool SELECTION_TOOL::Selectable( const BOARD_ITEM* aItem, bool checkVisibilityOn
|
||||||
}
|
}
|
||||||
|
|
||||||
// Otherwise, pads are selectable if any draw layer is visible
|
// Otherwise, pads are selectable if any draw layer is visible
|
||||||
|
return ( pad->GetLayerSet() & board()->GetVisibleLayers() ).any();
|
||||||
// Shortcut: check copper layer visibility
|
|
||||||
if( board()->IsLayerVisible( F_Cu ) && pad->IsOnLayer( F_Cu ) )
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if( board()->IsLayerVisible( B_Cu ) && pad->IsOnLayer( B_Cu ) )
|
|
||||||
return true;
|
|
||||||
|
|
||||||
// Now check the non-copper layers
|
|
||||||
|
|
||||||
bool draw_layer_visible = false;
|
|
||||||
|
|
||||||
int pad_layers[KIGFX::VIEW::VIEW_MAX_LAYERS], pad_layers_count;
|
|
||||||
pad->ViewGetLayers( pad_layers, pad_layers_count );
|
|
||||||
|
|
||||||
for( int i = 0; i < pad_layers_count; ++i )
|
|
||||||
{
|
|
||||||
// NOTE: Only checking the regular layers (not GAL meta-layers)
|
|
||||||
if( ( ( pad_layers[i] < PCB_LAYER_ID_COUNT ) &&
|
|
||||||
board()->IsLayerVisible( static_cast<PCB_LAYER_ID>( pad_layers[i] ) ) ) )
|
|
||||||
{
|
|
||||||
draw_layer_visible = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return draw_layer_visible;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue