pcbnew: Don't merge zones with different params

Zones can be explicitly merged even if they do not have the same
parameters.  Automatic merging should only occur when all of the zone
parameters are exactly identical to allow for area-specific zone
parameters.

Fixes: lp:1695761
* https://bugs.launchpad.net/kicad/+bug/1695761
This commit is contained in:
Seth Hillbrand 2018-09-16 17:13:10 -07:00
parent a67bfa6207
commit 3d0915a33e
1 changed files with 30 additions and 0 deletions

View File

@ -196,6 +196,36 @@ bool BOARD::TestAreaIntersections( ZONE_CONTAINER* area_to_test )
if( area_to_test->GetDoNotAllowVias() != area2->GetDoNotAllowVias() )
continue;
}
// Filled zone specific tests
else
{
if( area_to_test->GetClearance() != area2->GetClearance() )
continue;
if( area_to_test->GetThermalReliefGap() != area2->GetThermalReliefGap() )
continue;
if( area_to_test->GetThermalReliefCopperBridge() != area2->GetThermalReliefCopperBridge() )
continue;
if( area_to_test->GetArcSegmentCount() != area2->GetArcSegmentCount() )
continue;
if( area_to_test->GetZoneClearance() != area2->GetZoneClearance() )
continue;
if( area_to_test->GetPadConnection() != area2->GetPadConnection() )
continue;
if( area_to_test->GetMinThickness() != area2->GetMinThickness() )
continue;
if( area_to_test->GetCornerSmoothingType() != area2->GetCornerSmoothingType() )
continue;
if( area_to_test->GetCornerRadius() != area2->GetCornerRadius() )
continue;
}
if( TestAreaIntersection( area_to_test, area2 ) )
return true;