Don't allow the property editor to set bad layer pairs for vias

This commit is contained in:
Mark Roszko
2025-07-06 11:10:21 -04:00
parent 1ab8a5944b
commit 30242cca77
+19 -2
View File
@@ -1336,7 +1336,6 @@ void PCB_VIA::SetLayerSet( const LSET& aLayerSet )
void PCB_VIA::SetLayerPair( PCB_LAYER_ID aTopLayer, PCB_LAYER_ID aBottomLayer )
{
Padstack().Drill().start = aTopLayer;
Padstack().Drill().end = aBottomLayer;
SanitizeLayers();
@@ -1345,12 +1344,30 @@ void PCB_VIA::SetLayerPair( PCB_LAYER_ID aTopLayer, PCB_LAYER_ID aBottomLayer )
void PCB_VIA::SetTopLayer( PCB_LAYER_ID aLayer )
{
// refuse invalid via
if( aLayer == Padstack().Drill().end )
return;
if( IsCopperLayerLowerThan( aLayer, Padstack().Drill().end ) )
{
std::swap( aLayer, Padstack().Drill().end );
}
Padstack().Drill().start = aLayer;
}
void PCB_VIA::SetBottomLayer( PCB_LAYER_ID aLayer )
{
// refuse invalid via
if( aLayer == Padstack().Drill().start || !IsCopperLayerLowerThan( aLayer, Padstack().Drill().start ) )
return;
if( !IsCopperLayerLowerThan( aLayer, Padstack().Drill().start ) )
{
std::swap( aLayer, Padstack().Drill().start );
}
Padstack().Drill().end = aLayer;
}
@@ -2405,7 +2422,7 @@ static struct TRACK_VIA_DESC
propMgr.AddProperty( new PROPERTY<PCB_VIA, int>( _HKI( "Hole" ),
&PCB_VIA::SetDrill, &PCB_VIA::GetDrillValue, PROPERTY_DISPLAY::PT_SIZE ), groupVia );
propMgr.AddProperty( new PROPERTY_ENUM<PCB_VIA, PCB_LAYER_ID>( _HKI( "Layer Top" ),
&PCB_VIA::SetLayer, &PCB_VIA::GetLayer ), groupVia );
&PCB_VIA::SetTopLayer, &PCB_VIA::GetLayer ), groupVia );
propMgr.AddProperty( new PROPERTY_ENUM<PCB_VIA, PCB_LAYER_ID>( _HKI( "Layer Bottom" ),
&PCB_VIA::SetBottomLayer, &PCB_VIA::BottomLayer ), groupVia );
propMgr.AddProperty( new PROPERTY_ENUM<PCB_VIA, VIATYPE>( _HKI( "Via Type" ),