pcbnew: draw polygon and element previews on layer
This ensures that when starting to draw a zone or graphic element, the preview is drawn in the same color/on the same layer as the element that will be created. Previously, beginning a graphic polygon while a copper layer was active would result in the preview being drawn in the color of the active copper layer.
This commit is contained in:
parent
c9ca1013b2
commit
f714d2fa64
|
@ -976,6 +976,8 @@ bool DRAWING_TOOL::drawSegment( int aShape, DRAWSEGMENT*& aGraphic,
|
||||||
|
|
||||||
DRAWSEGMENT line45;
|
DRAWSEGMENT line45;
|
||||||
|
|
||||||
|
m_frame->SetActiveLayer( getDrawingLayer() );
|
||||||
|
|
||||||
// Add a VIEW_GROUP that serves as a preview for the new item
|
// Add a VIEW_GROUP that serves as a preview for the new item
|
||||||
SELECTION preview;
|
SELECTION preview;
|
||||||
m_view->Add( &preview );
|
m_view->Add( &preview );
|
||||||
|
@ -1458,6 +1460,13 @@ int DRAWING_TOOL::drawZone( bool aKeepout, ZONE_MODE aMode )
|
||||||
params.m_mode = aMode;
|
params.m_mode = aMode;
|
||||||
params.m_sourceZone = sourceZone;
|
params.m_sourceZone = sourceZone;
|
||||||
|
|
||||||
|
if( aMode == ZONE_MODE::GRAPHIC_POLYGON )
|
||||||
|
params.m_layer = getDrawingLayer();
|
||||||
|
else if( aMode == ZONE_MODE::SIMILAR )
|
||||||
|
params.m_layer = sourceZone->GetLayer();
|
||||||
|
else
|
||||||
|
params.m_layer = m_frame->GetActiveLayer();
|
||||||
|
|
||||||
ZONE_CREATE_HELPER zoneTool( *this, params );
|
ZONE_CREATE_HELPER zoneTool( *this, params );
|
||||||
|
|
||||||
// the geometry manager which handles the zone geometry, and
|
// the geometry manager which handles the zone geometry, and
|
||||||
|
|
|
@ -60,7 +60,7 @@ std::unique_ptr<ZONE_CONTAINER> ZONE_CREATE_HELPER::createNewZone( bool aKeepout
|
||||||
|
|
||||||
// Get the current default settings for zones
|
// Get the current default settings for zones
|
||||||
ZONE_SETTINGS zoneInfo = frame.GetZoneSettings();
|
ZONE_SETTINGS zoneInfo = frame.GetZoneSettings();
|
||||||
zoneInfo.m_CurrentZone_Layer = frame.GetScreen()->m_Active_Layer;
|
zoneInfo.m_CurrentZone_Layer = m_params.m_layer;
|
||||||
zoneInfo.m_NetcodeSelection = board.GetHighLightNetCode();
|
zoneInfo.m_NetcodeSelection = board.GetHighLightNetCode();
|
||||||
zoneInfo.SetIsKeepout( m_params.m_keepout );
|
zoneInfo.SetIsKeepout( m_params.m_keepout );
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,9 @@ public:
|
||||||
///> Should create a keepout zone?
|
///> Should create a keepout zone?
|
||||||
bool m_keepout;
|
bool m_keepout;
|
||||||
|
|
||||||
|
///> Layer to begin drawing
|
||||||
|
PCB_LAYER_ID m_layer;
|
||||||
|
|
||||||
///> The zone mode to operate in
|
///> The zone mode to operate in
|
||||||
DRAWING_TOOL::ZONE_MODE m_mode;
|
DRAWING_TOOL::ZONE_MODE m_mode;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue