Convert to zone: take dest layer from editor active layer
Show non-copper zone properties if active layer is non-copper Fixes https://gitlab.com/kicad/code/kicad/-/issues/8646
This commit is contained in:
parent
5a43392eae
commit
de4eb1fcef
|
@ -156,11 +156,7 @@ int CONVERT_TOOL::LinesToPoly( const TOOL_EVENT& aEvent )
|
||||||
if( selection.Empty() )
|
if( selection.Empty() )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
// TODO(JE) From a context menu, the selection condition enforces that the items are on
|
PCB_LAYER_ID destLayer = m_frame->GetActiveLayer();
|
||||||
// a single layer. But, you can still trigger this with items on multiple layer selected.
|
|
||||||
// Technically we should make this work if each contiguous poly shares a layer
|
|
||||||
PCB_LAYER_ID destLayer = static_cast<BOARD_ITEM*>( selection.Front() )->GetLayer();
|
|
||||||
|
|
||||||
SHAPE_POLY_SET polySet = makePolysFromSegs( selection.GetItems() );
|
SHAPE_POLY_SET polySet = makePolysFromSegs( selection.GetItems() );
|
||||||
|
|
||||||
polySet.Append( makePolysFromRects( selection.GetItems() ) );
|
polySet.Append( makePolysFromRects( selection.GetItems() ) );
|
||||||
|
@ -207,10 +203,15 @@ int CONVERT_TOOL::LinesToPoly( const TOOL_EVENT& aEvent )
|
||||||
BOARD_ITEM_CONTAINER* parent = frame->GetModel();
|
BOARD_ITEM_CONTAINER* parent = frame->GetModel();
|
||||||
ZONE_SETTINGS zoneInfo = frame->GetZoneSettings();
|
ZONE_SETTINGS zoneInfo = frame->GetZoneSettings();
|
||||||
|
|
||||||
|
bool nonCopper = IsNonCopperLayer( destLayer );
|
||||||
|
zoneInfo.m_Layers.reset().set( destLayer );
|
||||||
|
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if( aEvent.IsAction( &PCB_ACTIONS::convertToKeepout ) )
|
if( aEvent.IsAction( &PCB_ACTIONS::convertToKeepout ) )
|
||||||
ret = InvokeRuleAreaEditor( frame, &zoneInfo );
|
ret = InvokeRuleAreaEditor( frame, &zoneInfo );
|
||||||
|
else if( nonCopper )
|
||||||
|
ret = InvokeNonCopperZonesEditor( frame, &zoneInfo );
|
||||||
else
|
else
|
||||||
ret = InvokeCopperZonesEditor( frame, &zoneInfo );
|
ret = InvokeCopperZonesEditor( frame, &zoneInfo );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue