Browse Source

Handle netclasses assigned to bus labels.

Fixes https://gitlab.com/kicad/code/kicad/issues/12546
7.0
Jeff Young 3 years ago
parent
commit
eea8c7a8fd
  1. 39
      eeschema/connection_graph.cpp

39
eeschema/connection_graph.cpp

@ -1701,25 +1701,48 @@ void CONNECTION_GRAPH::buildConnectionGraph( std::function<void( SCH_ITEM* )>* a
auto checkNetclassDrivers =
[&]( const std::vector<CONNECTION_SUBGRAPH*>& subgraphs )
{
const CONNECTION_SUBGRAPH* driverSubgraph;
wxString netclass;
for( const CONNECTION_SUBGRAPH* subgraph : subgraphs )
{
for( SCH_ITEM* item : subgraph->m_items )
{
const wxString netclass = subgraph->GetNetclassForDriver( item );
netclass = subgraph->GetNetclassForDriver( item );
if( !netclass.IsEmpty() )
{
const wxString netname = subgraph->GetNetName();
break;
}
if( !netclass.IsEmpty() )
{
driverSubgraph = subgraph;
break;
}
}
netSettings->m_NetClassLabelAssignments[ netname ] = netclass;
if( netclass.IsEmpty() )
return;
if( oldAssignments[ netname ] != netclass )
dirtySubgraphs( subgraphs );
const wxString netname = driverSubgraph->GetNetName();
return;
}
if( driverSubgraph->m_driver_connection->IsBus() )
{
for( const auto& member : driverSubgraph->m_driver_connection->Members() )
{
netSettings->m_NetClassLabelAssignments[ member->Name() ] = netclass;
auto ii = m_net_name_to_subgraphs_map.find( member->Name() );
if( ii != m_net_name_to_subgraphs_map.end() )
dirtySubgraphs( ii->second );
}
}
netSettings->m_NetClassLabelAssignments[ netname ] = netclass;
if( oldAssignments[ netname ] != netclass )
dirtySubgraphs( subgraphs );
};
for( const auto& [ netname, subgraphs ] : m_net_name_to_subgraphs_map )

Loading…
Cancel
Save