Use WX_GRID::ClearRows() to avoid assertions.

Fixes KICAD-VM1.
This commit is contained in:
Jeff Young 2025-09-08 13:33:35 +01:00
parent 22288e02a2
commit 0b102fc085
6 changed files with 11 additions and 21 deletions

View File

@ -167,9 +167,7 @@ void PANEL_EMBEDDED_FILES::resizeGrid()
bool PANEL_EMBEDDED_FILES::TransferDataToWindow() bool PANEL_EMBEDDED_FILES::TransferDataToWindow()
{ {
m_files_grid->ClearGrid(); m_files_grid->ClearGrid();
m_files_grid->ClearRows();
if( m_files_grid->GetNumberRows() > 0 )
m_files_grid->DeleteRows( 0, m_files_grid->GetNumberRows() );
int ii = 0; int ii = 0;

View File

@ -244,10 +244,10 @@ public:
* to the number of rows (even if the delete count is 0). Needless to say, this makes using * to the number of rows (even if the delete count is 0). Needless to say, this makes using
* DeleteRows for clearing a lot more cumbersome so we add a helper here. * DeleteRows for clearing a lot more cumbersome so we add a helper here.
*/ */
void ClearRows() void ClearRows( bool aUpdateLabels = true )
{ {
if( GetNumberRows() ) if( GetNumberRows() > 0 )
DeleteRows( 0, GetNumberRows() ); DeleteRows( 0, GetNumberRows(), aUpdateLabels );
} }
/** /**

View File

@ -518,9 +518,7 @@ void PANEL_JOBSET::RemoveDestination( PANEL_DESTINATION* aPanel )
void PANEL_JOBSET::rebuildJobList() void PANEL_JOBSET::rebuildJobList()
{ {
if( m_jobsGrid->GetNumberRows() ) m_jobsGrid->ClearRows();
m_jobsGrid->DeleteRows( 0, m_jobsGrid->GetNumberRows() );
m_jobsGrid->AppendRows( (int) m_jobsFile->GetJobs().size() ); m_jobsGrid->AppendRows( (int) m_jobsFile->GetJobs().size() );
int num = 1; int num = 1;

View File

@ -206,8 +206,7 @@ void DIALOG_MANAGE_REPOSITORIES::selectRow( int aRow )
void DIALOG_MANAGE_REPOSITORIES::SetData( const std::vector<std::pair<wxString, wxString>>& aData ) void DIALOG_MANAGE_REPOSITORIES::SetData( const std::vector<std::pair<wxString, wxString>>& aData )
{ {
m_grid->Freeze(); m_grid->Freeze();
m_grid->ClearRows();
m_grid->DeleteRows( 0, m_grid->GetNumberRows() );
m_grid->AppendRows( aData.size() ); m_grid->AppendRows( aData.size() );
for( size_t i = 0; i < aData.size(); i++ ) for( size_t i = 0; i < aData.size(); i++ )

View File

@ -302,9 +302,7 @@ void PANEL_PACKAGES_VIEW::setPackageDetails( const PACKAGE_VIEW_DATA& aPackageDa
// Versions table // Versions table
m_gridVersions->Freeze(); m_gridVersions->Freeze();
m_gridVersions->ClearRows();
if( m_gridVersions->GetNumberRows() != 0 )
m_gridVersions->DeleteRows( 0, m_gridVersions->GetNumberRows() );
int row = 0; int row = 0;
wxString current_version; wxString current_version;
@ -395,10 +393,7 @@ void PANEL_PACKAGES_VIEW::unsetPackageDetails()
// Clean up grid just so we don't keep stale info around (it's already been hidden). // Clean up grid just so we don't keep stale info around (it's already been hidden).
m_gridVersions->Freeze(); m_gridVersions->Freeze();
m_gridVersions->ClearRows();
if( m_gridVersions->GetNumberRows() > 0 )
m_gridVersions->DeleteRows( 0, m_gridVersions->GetNumberRows() );
m_gridVersions->Thaw(); m_gridVersions->Thaw();
} }

View File

@ -155,7 +155,7 @@ void PANEL_SETUP_TRACKS_AND_VIAS::OnSortTrackWidthsClick( wxCommandEvent& aEvent
} }
std::sort( trackWidths.begin(), trackWidths.end() ); std::sort( trackWidths.begin(), trackWidths.end() );
m_trackWidthsGrid->DeleteRows( 0, m_trackWidthsGrid->GetNumberRows(), false ); m_trackWidthsGrid->ClearRows( false );
for( int width : trackWidths ) for( int width : trackWidths )
AppendTrackWidth( width ); AppendTrackWidth( width );
@ -194,7 +194,7 @@ void PANEL_SETUP_TRACKS_AND_VIAS::OnSortViaSizesClick( wxCommandEvent& aEvent )
} }
std::sort( vias.begin(), vias.end() ); std::sort( vias.begin(), vias.end() );
m_viaSizesGrid->DeleteRows( 0, m_viaSizesGrid->GetNumberRows(), false ); m_viaSizesGrid->ClearRows( false );
for( const VIA_DIMENSION& via : vias ) for( const VIA_DIMENSION& via : vias )
AppendViaSize( via.m_Diameter, via.m_Drill ); AppendViaSize( via.m_Diameter, via.m_Drill );
@ -236,7 +236,7 @@ void PANEL_SETUP_TRACKS_AND_VIAS::OnSortDiffPairsClick( wxCommandEvent& aEvent )
} }
std::sort( diffPairs.begin(), diffPairs.end() ); std::sort( diffPairs.begin(), diffPairs.end() );
m_diffPairsGrid->DeleteRows( 0, m_diffPairsGrid->GetNumberRows(), false ); m_diffPairsGrid->ClearRows( false );
for( const DIFF_PAIR_DIMENSION& dp : diffPairs ) for( const DIFF_PAIR_DIMENSION& dp : diffPairs )
AppendDiffPairs( dp.m_Width, dp.m_Gap, dp.m_ViaGap ); AppendDiffPairs( dp.m_Width, dp.m_Gap, dp.m_ViaGap );