PNS: Don't allow routing on hidden layers
If the layer is not shown, we should not be allowing it's items to be
selected and chosen as the start/end items in the router.
(cherry picked from commit fc1fb7a590
)
This commit is contained in:
parent
49dd5d838c
commit
aa875e5830
|
@ -1048,6 +1048,7 @@ bool PNS_KICAD_IFACE::syncGraphicalItem( PNS::NODE* aWorld, DRAWSEGMENT* aItem )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PNS_KICAD_IFACE::SetBoard( BOARD* aBoard )
|
void PNS_KICAD_IFACE::SetBoard( BOARD* aBoard )
|
||||||
{
|
{
|
||||||
m_board = aBoard;
|
m_board = aBoard;
|
||||||
|
@ -1055,6 +1056,19 @@ void PNS_KICAD_IFACE::SetBoard( BOARD* aBoard )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool PNS_KICAD_IFACE::IsAnyLayerVisible( const LAYER_RANGE& aLayer )
|
||||||
|
{
|
||||||
|
if( !m_view )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
for( int i = aLayer.Start(); i <= aLayer.End(); i++ )
|
||||||
|
if( m_view->IsLayerVisible( i ) )
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void PNS_KICAD_IFACE::SyncWorld( PNS::NODE *aWorld )
|
void PNS_KICAD_IFACE::SyncWorld( PNS::NODE *aWorld )
|
||||||
{
|
{
|
||||||
int worstPadClearance = 0;
|
int worstPadClearance = 0;
|
||||||
|
|
|
@ -52,6 +52,7 @@ public:
|
||||||
void SetView( KIGFX::VIEW* aView );
|
void SetView( KIGFX::VIEW* aView );
|
||||||
void SyncWorld( PNS::NODE* aWorld ) override;
|
void SyncWorld( PNS::NODE* aWorld ) override;
|
||||||
void EraseView() override;
|
void EraseView() override;
|
||||||
|
bool IsAnyLayerVisible( const LAYER_RANGE& aLayer ) override;
|
||||||
void HideItem( PNS::ITEM* aItem ) override;
|
void HideItem( PNS::ITEM* aItem ) override;
|
||||||
void DisplayItem( const PNS::ITEM* aItem, int aColor = 0, int aClearance = 0, bool aEdit = false ) override;
|
void DisplayItem( const PNS::ITEM* aItem, int aColor = 0, int aClearance = 0, bool aEdit = false ) override;
|
||||||
void AddItem( PNS::ITEM* aItem ) override;
|
void AddItem( PNS::ITEM* aItem ) override;
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include <core/optional.h>
|
#include <core/optional.h>
|
||||||
#include <boost/unordered_set.hpp>
|
#include <boost/unordered_set.hpp>
|
||||||
|
|
||||||
|
#include <layers_id_colors_and_visibility.h>
|
||||||
#include <geometry/shape_line_chain.h>
|
#include <geometry/shape_line_chain.h>
|
||||||
|
|
||||||
#include "pns_routing_settings.h"
|
#include "pns_routing_settings.h"
|
||||||
|
@ -93,6 +94,7 @@ enum DRAG_MODE
|
||||||
virtual void SyncWorld( NODE* aNode ) = 0;
|
virtual void SyncWorld( NODE* aNode ) = 0;
|
||||||
virtual void AddItem( ITEM* aItem ) = 0;
|
virtual void AddItem( ITEM* aItem ) = 0;
|
||||||
virtual void RemoveItem( ITEM* aItem ) = 0;
|
virtual void RemoveItem( ITEM* aItem ) = 0;
|
||||||
|
virtual bool IsAnyLayerVisible( const LAYER_RANGE& aLayer ) = 0;
|
||||||
virtual void DisplayItem( const ITEM* aItem, int aColor = -1, int aClearance = -1, bool aEdit = false ) = 0;
|
virtual void DisplayItem( const ITEM* aItem, int aColor = -1, int aClearance = -1, bool aEdit = false ) = 0;
|
||||||
virtual void HideItem( ITEM* aItem ) = 0;
|
virtual void HideItem( ITEM* aItem ) = 0;
|
||||||
virtual void Commit() = 0;
|
virtual void Commit() = 0;
|
||||||
|
|
|
@ -137,6 +137,9 @@ ITEM* TOOL_BASE::pickSingleItem( const VECTOR2I& aWhere, int aNet, int aLayer, b
|
||||||
if( !IsCopperLayer( item->Layers().Start() ) )
|
if( !IsCopperLayer( item->Layers().Start() ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if( !m_iface->IsAnyLayerVisible( item->Layers() ) )
|
||||||
|
continue;
|
||||||
|
|
||||||
if( std::find( aAvoidItems.begin(), aAvoidItems.end(), item ) != aAvoidItems.end() )
|
if( std::find( aAvoidItems.begin(), aAvoidItems.end(), item ) != aAvoidItems.end() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue