diff --git a/pcbnew/pad.cpp b/pcbnew/pad.cpp index c6719bd41e..5ff36b3f0e 100644 --- a/pcbnew/pad.cpp +++ b/pcbnew/pad.cpp @@ -649,10 +649,32 @@ const BOX2I PAD::GetBoundingBox() const void PAD::SetAttribute( PAD_ATTRIB aAttribute ) { - m_attribute = aAttribute; + if( m_attribute != aAttribute ) + { + m_attribute = aAttribute; - if( aAttribute == PAD_ATTRIB::SMD ) - m_drill = VECTOR2I( 0, 0 ); + switch( aAttribute ) + { + case PAD_ATTRIB::PTH: + m_layerMask = PAD::PTHMask(); + break; + + case PAD_ATTRIB::SMD: + case PAD_ATTRIB::CONN: + if( m_layerMask.test( F_Cu ) ) + m_layerMask = { F_Cu }; + else + m_layerMask = { B_Cu }; + + m_drill = VECTOR2I( 0, 0 ); + break; + + case PAD_ATTRIB::NPTH: + m_number = wxEmptyString; + SetNetCode( NETINFO_LIST::UNCONNECTED ); + break; + } + } SetDirty(); }