Force layers visible when routing on them.
Fixes https://gitlab.com/kicad/code/kicad/issues/8432
This commit is contained in:
parent
2354222188
commit
4c69a74505
|
@ -36,6 +36,7 @@ using namespace std::placeholders;
|
||||||
#include <dialogs/dialog_pns_diff_pair_dimensions.h>
|
#include <dialogs/dialog_pns_diff_pair_dimensions.h>
|
||||||
#include <dialogs/dialog_track_via_size.h>
|
#include <dialogs/dialog_track_via_size.h>
|
||||||
#include <widgets/infobar.h>
|
#include <widgets/infobar.h>
|
||||||
|
#include <widgets/appearance_controls.h>
|
||||||
#include <confirm.h>
|
#include <confirm.h>
|
||||||
#include <bitmaps.h>
|
#include <bitmaps.h>
|
||||||
#include <tool/action_menu.h>
|
#include <tool/action_menu.h>
|
||||||
|
@ -609,7 +610,6 @@ void ROUTER_TOOL::switchLayerOnViaPlacement()
|
||||||
|
|
||||||
m_router->SwitchLayer( *newLayer );
|
m_router->SwitchLayer( *newLayer );
|
||||||
m_lastTargetLayer = *newLayer;
|
m_lastTargetLayer = *newLayer;
|
||||||
frame()->SetActiveLayer( ToLAYER_ID( *newLayer ) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1000,18 +1000,23 @@ int ROUTER_TOOL::handleLayerSwitch( const TOOL_EVENT& aEvent, bool aForceVia )
|
||||||
|
|
||||||
bool ROUTER_TOOL::prepareInteractive()
|
bool ROUTER_TOOL::prepareInteractive()
|
||||||
{
|
{
|
||||||
int routingLayer = getStartLayer( m_startItem );
|
PCB_EDIT_FRAME* editFrame = getEditFrame<PCB_EDIT_FRAME>();
|
||||||
|
int routingLayer = getStartLayer( m_startItem );
|
||||||
|
|
||||||
if( !IsCopperLayer( routingLayer ) )
|
if( !IsCopperLayer( routingLayer ) )
|
||||||
{
|
{
|
||||||
frame()->ShowInfoBarError( _( "Tracks on Copper layers only." ) );
|
editFrame->ShowInfoBarError( _( "Tracks on Copper layers only." ) );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
PCB_EDIT_FRAME* editFrame = getEditFrame<PCB_EDIT_FRAME>();
|
|
||||||
|
|
||||||
editFrame->SetActiveLayer( ToLAYER_ID( routingLayer ) );
|
editFrame->SetActiveLayer( ToLAYER_ID( routingLayer ) );
|
||||||
|
|
||||||
|
if( !getView()->IsLayerVisible( routingLayer ) )
|
||||||
|
{
|
||||||
|
editFrame->GetAppearancePanel()->SetLayerVisible( routingLayer, true );
|
||||||
|
editFrame->GetCanvas()->Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
if( m_startItem && m_startItem->Net() > 0 )
|
if( m_startItem && m_startItem->Net() > 0 )
|
||||||
highlightNet( true, m_startItem->Net() );
|
highlightNet( true, m_startItem->Net() );
|
||||||
|
|
||||||
|
@ -1125,7 +1130,17 @@ void ROUTER_TOOL::performRouting()
|
||||||
switchLayerOnViaPlacement();
|
switchLayerOnViaPlacement();
|
||||||
|
|
||||||
// Synchronize the indicated layer
|
// Synchronize the indicated layer
|
||||||
frame()->SetActiveLayer( ToLAYER_ID( m_router->GetCurrentLayer() ) );
|
PCB_LAYER_ID routingLayer = ToLAYER_ID( m_router->GetCurrentLayer() );
|
||||||
|
PCB_EDIT_FRAME* editFrame = getEditFrame<PCB_EDIT_FRAME>();
|
||||||
|
|
||||||
|
editFrame->SetActiveLayer( routingLayer );
|
||||||
|
|
||||||
|
if( !getView()->IsLayerVisible( routingLayer ) )
|
||||||
|
{
|
||||||
|
editFrame->GetAppearancePanel()->SetLayerVisible( routingLayer, true );
|
||||||
|
editFrame->GetCanvas()->Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
updateEndItem( *evt );
|
updateEndItem( *evt );
|
||||||
m_router->Move( m_endSnapPoint, m_endItem );
|
m_router->Move( m_endSnapPoint, m_endItem );
|
||||||
m_startItem = nullptr;
|
m_startItem = nullptr;
|
||||||
|
|
Loading…
Reference in New Issue