From c0a608bfdd98ab7ae376650b376a76421a8fd7f2 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Wed, 20 Mar 2024 18:35:40 +0000 Subject: [PATCH] Keep internal data consistent when changing pad type. Fixes https://gitlab.com/kicad/code/kicad/-/issues/17493 (cherry picked from commit 859f553c9138fae420c1882a77f53a1ee32afded) --- pcbnew/pad.cpp | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) 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(); }