From a697be4fbf5fccfb347a9a960dfdae7d234abca2 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Mon, 1 Dec 2025 17:26:37 +0000 Subject: [PATCH] Resolve text variables when resolving netclasses. Fixes https://gitlab.com/kicad/code/kicad/-/issues/22413 (cherry picked from commit 36c603b6f036d0f93d17b2e36ceced89e7e39f95) --- eeschema/connection_graph.cpp | 10 +++++----- eeschema/sch_rule_area.cpp | 8 ++++---- eeschema/sch_rule_area.h | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/eeschema/connection_graph.cpp b/eeschema/connection_graph.cpp index 1d0229075a..27cb7365f6 100644 --- a/eeschema/connection_graph.cpp +++ b/eeschema/connection_graph.cpp @@ -441,13 +441,13 @@ CONNECTION_SUBGRAPH::GetNetclassesForDriver( SCH_ITEM* aItem ) const // Get netclasses on attached rule areas for( SCH_RULE_AREA* ruleArea : ruleAreaCache ) { - const std::vector> ruleNetclasses = - ruleArea->GetResolvedNetclasses(); + const std::vector> ruleAreaNetclasses = + ruleArea->GetResolvedNetclasses( &m_sheet ); - if( ruleNetclasses.size() > 0 ) + if( ruleAreaNetclasses.size() > 0 ) { - foundNetclasses.insert( foundNetclasses.end(), ruleNetclasses.begin(), - ruleNetclasses.end() ); + foundNetclasses.insert( foundNetclasses.end(), ruleAreaNetclasses.begin(), + ruleAreaNetclasses.end() ); } } diff --git a/eeschema/sch_rule_area.cpp b/eeschema/sch_rule_area.cpp index 6a3470ff9e..25104ef199 100644 --- a/eeschema/sch_rule_area.cpp +++ b/eeschema/sch_rule_area.cpp @@ -342,7 +342,8 @@ const std::unordered_set& SCH_RULE_AREA::GetDirectives() c } -const std::vector> SCH_RULE_AREA::GetResolvedNetclasses() const +const std::vector> +SCH_RULE_AREA::GetResolvedNetclasses( const SCH_SHEET_PATH* aSheetPath ) const { std::vector> resolvedNetclasses; @@ -357,7 +358,7 @@ const std::vector> SCH_RULE_AREA::GetResolvedNetc if( field->GetCanonicalName() == wxT( "Netclass" ) ) { - wxString netclass = field->GetText(); + wxString netclass = field->GetShownText( aSheetPath, false ); if( netclass != wxEmptyString ) resolvedNetclasses.push_back( { netclass, directive } ); @@ -395,8 +396,7 @@ void SCH_RULE_AREA::GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector> netclasses = - SCH_RULE_AREA::GetResolvedNetclasses(); + const std::vector> netclasses = SCH_RULE_AREA::GetResolvedNetclasses( nullptr ); wxString resolvedNetclass = _( "" ); if( netclasses.size() > 0 ) diff --git a/eeschema/sch_rule_area.h b/eeschema/sch_rule_area.h index f7230dcdd8..7a89f05790 100644 --- a/eeschema/sch_rule_area.h +++ b/eeschema/sch_rule_area.h @@ -95,7 +95,7 @@ public: /// Resolve the netclass of this rule area from connected directive labels. /// /// @return The resolved netclass (if any), and the SCH_ITEM providing the declaration. - const std::vector> GetResolvedNetclasses() const; + const std::vector> GetResolvedNetclasses( const SCH_SHEET_PATH* aSheetPath ) const; /// Clear and resets items and directives attached to this rule area. void ResetDirectivesAndItems( KIGFX::SCH_VIEW* view );