Properly send cross-probe for nested buses
Fixes https://gitlab.com/kicad/code/kicad/-/issues/4541
This commit is contained in:
parent
91b9e928dc
commit
df16ea25a8
|
@ -384,9 +384,11 @@ void SCH_EDIT_FRAME::SetCrossProbeConnection( const SCH_CONNECTION* aConnection
|
|||
if( aConnection->Members().empty() )
|
||||
return;
|
||||
|
||||
wxString nets = aConnection->Members()[0]->Name();
|
||||
auto all_members = aConnection->AllMembers();
|
||||
|
||||
if( aConnection->Members().size() == 1 )
|
||||
wxString nets = all_members[0]->Name();
|
||||
|
||||
if( all_members.size() == 1 )
|
||||
{
|
||||
SendCrossProbeNetName( nets );
|
||||
return;
|
||||
|
@ -396,8 +398,8 @@ void SCH_EDIT_FRAME::SetCrossProbeConnection( const SCH_CONNECTION* aConnection
|
|||
// included as part of the netlist sent from eeschema to pcbnew (and thus pcbnew can
|
||||
// natively keep track of bus membership)
|
||||
|
||||
for( size_t i = 1; i < aConnection->Members().size(); i++ )
|
||||
nets << "," << aConnection->Members()[i]->Name();
|
||||
for( size_t i = 1; i < all_members.size(); i++ )
|
||||
nets << "," << all_members[i]->Name();
|
||||
|
||||
std::string packet = StrPrintf( "$NETS: \"%s\"", TO_UTF8( nets ) );
|
||||
|
||||
|
|
|
@ -643,6 +643,18 @@ bool SCH_CONNECTION::ParseBusGroup( wxString aGroup, wxString* aName,
|
|||
}
|
||||
|
||||
|
||||
const std::vector< std::shared_ptr< SCH_CONNECTION > > SCH_CONNECTION::AllMembers() const
|
||||
{
|
||||
std::vector< std::shared_ptr< SCH_CONNECTION > > ret( m_members );
|
||||
|
||||
for( const auto& member : m_members )
|
||||
if( member->IsBus() )
|
||||
ret.insert( ret.end(), member->Members().begin(), member->Members().end() );
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
wxString SCH_CONNECTION::PrintBusForUI( const wxString& aGroup )
|
||||
{
|
||||
size_t groupLen = aGroup.length();
|
||||
|
|
|
@ -258,6 +258,8 @@ public:
|
|||
return m_members;
|
||||
}
|
||||
|
||||
const std::vector< std::shared_ptr< SCH_CONNECTION > > AllMembers() const;
|
||||
|
||||
static wxString PrintBusForUI( const wxString& aString );
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue