Allow same-net, same-priority zone filling

When two zones with the same net and same priority overlap, they should
both be filled, matching the behavior of v6.  If you would like an
explicit override of one or the other, you need to set the zone priority
higher.  Relying on the UUID as a tie breaker is good for zones with
different nets but creates unexpected changes from v6 when applying it
to zones of the same net
This commit is contained in:
Seth Hillbrand 2023-02-10 11:07:08 -08:00
parent e2353a2849
commit f4825cdd8f
1 changed files with 4 additions and 1 deletions

View File

@ -1329,7 +1329,10 @@ void ZONE_FILLER::subtractHigherPriorityZones( const ZONE* aZone, PCB_LAYER_ID a
for( ZONE* otherZone : m_board->Zones() )
{
if( otherZone->SameNet( aZone ) && otherZone->HigherPriority( aZone ) )
// Don't use the `HigherPriority()` check here because we _only_ want to knock out zones
// with explicitly higher priorities, not those with equal priorities
if( otherZone->SameNet( aZone )
&& otherZone->GetAssignedPriority() > aZone->GetAssignedPriority() )
{
// Do not remove teardrop area: it is not useful and not good
if( !otherZone->IsTeardropArea() )