Browse Source

Fix persistence of expanded groups in PCB net inspector panel

Ensures expanded groups are maintained while:
- Handling bulk board updates
- When loading a new project / board
9.0
JamesJCode 9 months ago
parent
commit
71517dfa24
  1. 18
      pcbnew/widgets/pcb_net_inspector_panel.cpp

18
pcbnew/widgets/pcb_net_inspector_panel.cpp

@ -37,7 +37,6 @@
#include <eda_pattern_match.h>
#include <wx/wupdlock.h>
#include <wx/headerctrl.h>
#include <wx/filedlg.h>
#include <algorithm>
@ -409,6 +408,20 @@ void PCB_NET_INSPECTOR_PANEL::buildNetsList( bool rebuildColumns )
m_group_by_netclass = cfg->group_by_netclass;
m_group_by_constraint = cfg->group_by_constraint;
// Attempt to keep any expanded groups open
if( m_board_loaded && !m_board_loading )
{
cfg->expanded_rows.clear();
DATA_MODEL* model = static_cast<DATA_MODEL*>( m_netsList->GetModel() );
for( const auto& groupItems = model->getGroupDataViewItems();
auto& [groupName, groupItem] : groupItems )
{
if( m_netsList->IsExpanded( groupItem ) )
cfg->expanded_rows.push_back( groupName );
}
}
// when rebuilding the netlist, try to keep the row selection
wxDataViewItemArray sel;
m_netsList->GetSelections( sel );
@ -1666,7 +1679,8 @@ void PCB_NET_INSPECTOR_PANEL::highlightSelectedNets()
void PCB_NET_INSPECTOR_PANEL::OnColumnSorted( wxDataViewEvent& event )
{
SaveSettings();
if( !m_in_build_nets_list )
SaveSettings();
}

Loading…
Cancel
Save