Keep track of which nets are currently in use.
Fixes: lp:1798006 * https://bugs.launchpad.net/kicad/+bug/1798006
This commit is contained in:
parent
8a54b1b3b7
commit
ff992f4a64
|
@ -236,14 +236,15 @@ protected:
|
|||
|
||||
for( NETINFO_ITEM* netinfo : *m_netinfoList )
|
||||
{
|
||||
if( netinfo->GetNet() == 0 )
|
||||
continue; // we'll insert NO_NET after sorting
|
||||
|
||||
if( filter.IsEmpty() || wxString( netinfo->GetNetname() ).MakeLower().Matches( filter ) )
|
||||
netNames.push_back( netinfo->GetNetname() );
|
||||
if( netinfo->GetNet() > 0 && netinfo->IsCurrent() )
|
||||
{
|
||||
if( filter.IsEmpty() || wxString( netinfo->GetNetname() ).MakeLower().Matches( filter ) )
|
||||
netNames.push_back( netinfo->GetNetname() );
|
||||
}
|
||||
}
|
||||
std::sort( netNames.begin(), netNames.end() );
|
||||
|
||||
// Special handling for <no net>
|
||||
if( filter.IsEmpty() || wxString( NO_NET ).MakeLower().Matches( filter ) )
|
||||
netNames.insert( netNames.begin(), NO_NET );
|
||||
|
||||
|
|
|
@ -306,10 +306,14 @@ bool BOARD_NETLIST_UPDATER::updateComponentPadConnections( MODULE* aPcbComponent
|
|||
}
|
||||
else // New footprint pad has a net.
|
||||
{
|
||||
if( net.GetNetName() != pad->GetNetname() )
|
||||
const wxString& netName = net.GetNetName();
|
||||
NETINFO_ITEM* netinfo = m_board->FindNet( netName );
|
||||
|
||||
if( netinfo && !m_isDryRun )
|
||||
netinfo->SetIsCurrent( true );
|
||||
|
||||
if( pad->GetNetname() != netName )
|
||||
{
|
||||
const wxString& netName = net.GetNetName();
|
||||
NETINFO_ITEM* netinfo = m_board->FindNet( netName );
|
||||
|
||||
if( netinfo == nullptr )
|
||||
{
|
||||
|
@ -326,9 +330,9 @@ bool BOARD_NETLIST_UPDATER::updateComponentPadConnections( MODULE* aPcbComponent
|
|||
changed = true;
|
||||
netinfo = new NETINFO_ITEM( m_board, netName );
|
||||
m_commit.Add( netinfo );
|
||||
m_addedNets[netName] = netinfo;
|
||||
}
|
||||
|
||||
m_addedNets[netName] = netinfo;
|
||||
msg.Printf( _( "Add net %s." ), netName );
|
||||
m_reporter->Report( msg, REPORTER::RPT_ACTION );
|
||||
}
|
||||
|
@ -626,6 +630,11 @@ bool BOARD_NETLIST_UPDATER::UpdateNetlist( NETLIST& aNetlist )
|
|||
if( !m_isDryRun )
|
||||
{
|
||||
m_board->SetStatus( 0 );
|
||||
|
||||
// Mark all nets (except <no net>) as stale; we'll update those to current that
|
||||
// we find in the netlist
|
||||
for( NETINFO_ITEM* net : m_board->GetNetInfo() )
|
||||
net->SetIsCurrent( net->GetNet() == 0 );
|
||||
}
|
||||
|
||||
for( unsigned i = 0; i < aNetlist.GetCount(); i++ )
|
||||
|
|
|
@ -2484,19 +2484,23 @@ void BOARD::updateComponentPadConnections( NETLIST& aNetlist, MODULE* footprint,
|
|||
}
|
||||
else // Footprint pad has a net.
|
||||
{
|
||||
if( net.GetNetName() != pad->GetNetname() )
|
||||
const wxString& netName = net.GetNetName();
|
||||
NETINFO_ITEM* netinfo = FindNet( netName );
|
||||
|
||||
if( netinfo && !aNetlist.IsDryRun() )
|
||||
netinfo->SetIsCurrent( true );
|
||||
|
||||
if( pad->GetNetname() != netName )
|
||||