Layer fixes for PCBNew drawing tools.
1) Implement layer changes for dimension drawing tool 2) Ensure drawing layer is visible for (1) and for the text drawing tool. Fixes https://gitlab.com/kicad/code/kicad/issues/8106
This commit is contained in:
parent
e50b450092
commit
3fd3be9843
|
@ -577,6 +577,12 @@ int DRAWING_TOOL::PlaceText( const TOOL_EVENT& aEvent )
|
||||||
|
|
||||||
if( text )
|
if( text )
|
||||||
{
|
{
|
||||||
|
if( !m_view->IsLayerVisible( text->GetLayer() ) )
|
||||||
|
{
|
||||||
|
m_frame->GetAppearancePanel()->SetLayerVisible( text->GetLayer(), true );
|
||||||
|
m_frame->GetCanvas()->Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
m_controls->WarpCursor( text->GetPosition(), true );
|
m_controls->WarpCursor( text->GetPosition(), true );
|
||||||
m_toolMgr->RunAction( PCB_ACTIONS::selectItem, true, text );
|
m_toolMgr->RunAction( PCB_ACTIONS::selectItem, true, text );
|
||||||
m_view->Update( &selection() );
|
m_view->Update( &selection() );
|
||||||
|
@ -835,6 +841,12 @@ int DRAWING_TOOL::DrawDimension( const TOOL_EVENT& aEvent )
|
||||||
dimension->SetEnd( (wxPoint) cursorPos );
|
dimension->SetEnd( (wxPoint) cursorPos );
|
||||||
dimension->Update();
|
dimension->Update();
|
||||||
|
|
||||||
|
if( !m_view->IsLayerVisible( layer ) )
|
||||||
|
{
|
||||||
|
m_frame->GetAppearancePanel()->SetLayerVisible( layer, true );
|
||||||
|
m_frame->GetCanvas()->Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
preview.Add( dimension );
|
preview.Add( dimension );
|
||||||
frame()->SetMsgPanel( dimension );
|
frame()->SetMsgPanel( dimension );
|
||||||
|
|
||||||
|
@ -1009,6 +1021,33 @@ int DRAWING_TOOL::DrawDimension( const TOOL_EVENT& aEvent )
|
||||||
// Show a preview of the item
|
// Show a preview of the item
|
||||||
m_view->Update( &preview );
|
m_view->Update( &preview );
|
||||||
}
|
}
|
||||||
|
else if( evt->IsAction( &PCB_ACTIONS::layerChanged ) )
|
||||||
|
{
|
||||||
|
if( dimension )
|
||||||
|
{
|
||||||
|
PCB_LAYER_ID layer = m_frame->GetActiveLayer();
|
||||||
|
|
||||||
|
if( !m_view->IsLayerVisible( layer ) )
|
||||||
|
{
|
||||||
|
m_frame->GetAppearancePanel()->SetLayerVisible( layer, true );
|
||||||
|
m_frame->GetCanvas()->Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
dimension->SetLayer( layer );
|
||||||
|
dimension->Text().SetTextSize( boardSettings.GetTextSize( layer ) );
|
||||||
|
dimension->Text().SetTextThickness( boardSettings.GetTextThickness( layer ) );
|
||||||
|
dimension->Text().SetItalic( boardSettings.GetTextItalic( layer ) );
|
||||||
|
dimension->SetLineThickness( boardSettings.GetLineThickness( layer ) );
|
||||||
|
dimension->Update();
|
||||||
|
|
||||||
|
m_view->Update( &preview );
|
||||||
|
frame()->SetMsgPanel( dimension );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
evt->SetPassEvent();
|
||||||
|
}
|
||||||
|
}
|
||||||
else if( evt->IsAction( &PCB_ACTIONS::properties ) )
|
else if( evt->IsAction( &PCB_ACTIONS::properties ) )
|
||||||
{
|
{
|
||||||
if( step == SET_END || step == SET_HEIGHT )
|
if( step == SET_END || step == SET_HEIGHT )
|
||||||
|
@ -1413,18 +1452,25 @@ bool DRAWING_TOOL::drawSegment( const std::string& aTool, PCB_SHAPE** aGraphic,
|
||||||
else if( evt->IsAction( &PCB_ACTIONS::layerChanged ) )
|
else if( evt->IsAction( &PCB_ACTIONS::layerChanged ) )
|
||||||
{
|
{
|
||||||
drawingLayer = m_frame->GetActiveLayer();
|
drawingLayer = m_frame->GetActiveLayer();
|
||||||
|
|
||||||
if( !m_view->IsLayerVisible( drawingLayer ) )
|
|
||||||
{
|
|
||||||
m_frame->GetAppearancePanel()->SetLayerVisible( drawingLayer, true );
|
|
||||||
m_frame->GetCanvas()->Refresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
m_lineWidth = getSegmentWidth( drawingLayer );
|
m_lineWidth = getSegmentWidth( drawingLayer );
|
||||||
graphic->SetLayer( drawingLayer );
|
|
||||||
graphic->SetWidth( m_lineWidth );
|
if( graphic )
|
||||||
m_view->Update( &preview );
|
{
|
||||||
frame()->SetMsgPanel( graphic );
|
if( !m_view->IsLayerVisible( drawingLayer ) )
|
||||||
|
{
|
||||||
|
m_frame->GetAppearancePanel()->SetLayerVisible( drawingLayer, true );
|
||||||
|
m_frame->GetCanvas()->Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
graphic->SetLayer( drawingLayer );
|
||||||
|
graphic->SetWidth( m_lineWidth );
|
||||||
|
m_view->Update( &preview );
|
||||||
|
frame()->SetMsgPanel( graphic );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
evt->SetPassEvent();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if( evt->IsAction( &PCB_ACTIONS::properties ) )
|
else if( evt->IsAction( &PCB_ACTIONS::properties ) )
|
||||||
{
|
{
|
||||||
|
@ -1763,18 +1809,25 @@ bool DRAWING_TOOL::drawArc( const std::string& aTool, PCB_SHAPE** aGraphic, bool
|
||||||
else if( evt->IsAction( &PCB_ACTIONS::layerChanged ) )
|
else if( evt->IsAction( &PCB_ACTIONS::layerChanged ) )
|
||||||
{
|
{
|
||||||
drawingLayer = m_frame->GetActiveLayer();
|
drawingLayer = m_frame->GetActiveLayer();
|
||||||
|
|
||||||
if( !m_view->IsLayerVisible( drawingLayer ) )
|
|
||||||
{
|
|
||||||
m_frame->GetAppearancePanel()->SetLayerVisible( drawingLayer, true );
|
|
||||||
m_frame->GetCanvas()->Refresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
m_lineWidth = getSegmentWidth( drawingLayer );
|
m_lineWidth = getSegmentWidth( drawingLayer );
|
||||||
graphic->SetLayer( drawingLayer );
|
|
||||||
graphic->SetWidth( m_lineWidth );
|
if( graphic )
|
||||||
m_view->Update( &preview );
|
{
|
||||||
frame()->SetMsgPanel( graphic );
|
if( !m_view->IsLayerVisible( drawingLayer ) )
|
||||||
|
{
|
||||||
|
m_frame->GetAppearancePanel()->SetLayerVisible( drawingLayer, true );
|
||||||
|
m_frame->GetCanvas()->Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
graphic->SetLayer( drawingLayer );
|
||||||
|
graphic->SetWidth( m_lineWidth );
|
||||||
|
m_view->Update( &preview );
|
||||||
|
frame()->SetMsgPanel( graphic );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
evt->SetPassEvent();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if( evt->IsAction( &PCB_ACTIONS::properties ) )
|
else if( evt->IsAction( &PCB_ACTIONS::properties ) )
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue