Re-centralise handling of sort column in net inspector list.
- Includes GTK crash fix from a5ef4f1b
- Additionally removes an unneccesary re-sort when rebuilding columns
- Correctly saves column state when using pcbnew standalone
This commit is contained in:
parent
a58e7b37ff
commit
de85b2217b
|
@ -74,6 +74,8 @@ PCB_NET_INSPECTOR_PANEL::PCB_NET_INSPECTOR_PANEL( wxWindow* parent, PCB_EDIT_FRA
|
||||||
&PCB_NET_INSPECTOR_PANEL::OnNetsListContextMenu, this );
|
&PCB_NET_INSPECTOR_PANEL::OnNetsListContextMenu, this );
|
||||||
m_netsList->Bind( wxEVT_DATAVIEW_ITEM_ACTIVATED,
|
m_netsList->Bind( wxEVT_DATAVIEW_ITEM_ACTIVATED,
|
||||||
&PCB_NET_INSPECTOR_PANEL::OnNetsListItemActivated, this );
|
&PCB_NET_INSPECTOR_PANEL::OnNetsListItemActivated, this );
|
||||||
|
m_netsList->Bind( wxEVT_DATAVIEW_COLUMN_SORTED,
|
||||||
|
&PCB_NET_INSPECTOR_PANEL::OnColumnSorted, this );
|
||||||
}
|
}
|
||||||
|
|
||||||
PCB_NET_INSPECTOR_PANEL::~PCB_NET_INSPECTOR_PANEL()
|
PCB_NET_INSPECTOR_PANEL::~PCB_NET_INSPECTOR_PANEL()
|
||||||
|
@ -100,6 +102,8 @@ PCB_NET_INSPECTOR_PANEL::~PCB_NET_INSPECTOR_PANEL()
|
||||||
&PCB_NET_INSPECTOR_PANEL::OnNetsListContextMenu, this );
|
&PCB_NET_INSPECTOR_PANEL::OnNetsListContextMenu, this );
|
||||||
m_netsList->Unbind( wxEVT_DATAVIEW_ITEM_ACTIVATED,
|
m_netsList->Unbind( wxEVT_DATAVIEW_ITEM_ACTIVATED,
|
||||||
&PCB_NET_INSPECTOR_PANEL::OnNetsListItemActivated, this );
|
&PCB_NET_INSPECTOR_PANEL::OnNetsListItemActivated, this );
|
||||||
|
m_netsList->Unbind( wxEVT_DATAVIEW_COLUMN_SORTED,
|
||||||
|
&PCB_NET_INSPECTOR_PANEL::OnColumnSorted, this );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -344,13 +348,6 @@ void PCB_NET_INSPECTOR_PANEL::adjustListColumnSizes( PANEL_NET_INSPECTOR_SETTING
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set / restore table sorting settings
|
|
||||||
if( !restoreSortColumn( cfg->sorting_column, cfg->sort_order_asc ) )
|
|
||||||
{
|
|
||||||
// By default sort by Name column
|
|
||||||
restoreSortColumn( COLUMN_NAME, true );
|
|
||||||
}
|
|
||||||
|
|
||||||
m_netsList->Refresh();
|
m_netsList->Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -425,18 +422,19 @@ void PCB_NET_INSPECTOR_PANEL::buildNetsList( bool rebuildColumns )
|
||||||
prev_selected_netcodes.push_back( item->GetNetCode() );
|
prev_selected_netcodes.push_back( item->GetNetCode() );
|
||||||
}
|
}
|
||||||
|
|
||||||
// At least on GTK, wxDVC will crash if you rebuild with a sorting column set.
|
|
||||||
int sorting_column_id = cfg->sorting_column;
|
int sorting_column_id = cfg->sorting_column;
|
||||||
bool sort_order_asc = cfg->sort_order_asc;
|
bool sort_order_asc = cfg->sort_order_asc;
|
||||||
|
|
||||||
if( !m_board_loading )
|
if( wxDataViewColumn* sorting_column = m_netsList->GetSortingColumn() )
|
||||||
{
|
{
|
||||||
if( wxDataViewColumn* sorting_column = m_netsList->GetSortingColumn() )
|
if( !m_board_loading )
|
||||||
{
|
{
|
||||||
sorting_column_id = static_cast<int>( sorting_column->GetModelColumn() );
|
sorting_column_id = static_cast<int>( sorting_column->GetModelColumn() );
|
||||||
sort_order_asc = sorting_column->IsSortOrderAscending();
|
sort_order_asc = sorting_column->IsSortOrderAscending();
|
||||||
sorting_column->UnsetAsSortKey();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// On GTK, wxDVC will crash if you rebuild with a sorting column set.
|
||||||
|
sorting_column->UnsetAsSortKey();
|
||||||
}
|
}
|
||||||
|
|
||||||
if( rebuildColumns )
|
if( rebuildColumns )
|
||||||
|
@ -505,7 +503,11 @@ void PCB_NET_INSPECTOR_PANEL::buildNetsList( bool rebuildColumns )
|
||||||
m_data_model->addItems( std::move( new_items ) );
|
m_data_model->addItems( std::move( new_items ) );
|
||||||
|
|
||||||
// Re-enable the sorting column
|
// Re-enable the sorting column
|
||||||
restoreSortColumn( sorting_column_id, sort_order_asc );
|
if( !restoreSortColumn( sorting_column_id, sort_order_asc ))
|
||||||
|
{
|
||||||
|
// By default sort by Name column
|
||||||
|
restoreSortColumn( COLUMN_NAME, true );
|
||||||
|
}
|
||||||
|
|
||||||
// Try to restore the expanded groups
|
// Try to restore the expanded groups
|
||||||
if( m_board_loaded )
|
if( m_board_loaded )
|
||||||
|
@ -861,11 +863,6 @@ void PCB_NET_INSPECTOR_PANEL::onBoardChanged( wxCommandEvent& event )
|
||||||
m_board_loaded = true;
|
m_board_loaded = true;
|
||||||
m_board_loading = true;
|
m_board_loading = true;
|
||||||
|
|
||||||
wxDataViewColumn* currentSorting = m_netsList->GetSortingColumn();
|
|
||||||
|
|
||||||
if( currentSorting )
|
|
||||||
currentSorting->UnsetAsSortKey();
|
|
||||||
|
|
||||||
PROJECT_LOCAL_SETTINGS& localSettings = Pgm().GetSettingsManager().Prj().GetLocalSettings();
|
PROJECT_LOCAL_SETTINGS& localSettings = Pgm().GetSettingsManager().Prj().GetLocalSettings();
|
||||||
auto& cfg = localSettings.m_NetInspectorPanel;
|
auto& cfg = localSettings.m_NetInspectorPanel;
|
||||||
m_searchCtrl->SetValue( cfg.filter_text );
|
m_searchCtrl->SetValue( cfg.filter_text );
|
||||||
|
@ -1613,6 +1610,12 @@ void PCB_NET_INSPECTOR_PANEL::highlightSelectedNets()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PCB_NET_INSPECTOR_PANEL::OnColumnSorted( wxDataViewEvent& event )
|
||||||
|
{
|
||||||
|
SaveSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void PCB_NET_INSPECTOR_PANEL::OnParentSetupChanged()
|
void PCB_NET_INSPECTOR_PANEL::OnParentSetupChanged()
|
||||||
{
|
{
|
||||||
// Rebuilt the nets list, and force rebuild of columns in case the stackup has chanaged
|
// Rebuilt the nets list, and force rebuild of columns in case the stackup has chanaged
|
||||||
|
|
|
@ -103,6 +103,7 @@ protected:
|
||||||
void OnHeaderContextMenu( wxCommandEvent& event );
|
void OnHeaderContextMenu( wxCommandEvent& event );
|
||||||
void OnNetsListContextMenu( wxDataViewEvent& event );
|
void OnNetsListContextMenu( wxDataViewEvent& event );
|
||||||
void OnNetsListItemActivated( wxDataViewEvent& event );
|
void OnNetsListItemActivated( wxDataViewEvent& event );
|
||||||
|
void OnColumnSorted( wxDataViewEvent& event );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue