Delete multiple rows if selected.

Fixes https://gitlab.com/kicad/code/kicad/issues/12013
This commit is contained in:
Jeff Young 2022-07-16 12:06:19 +01:00
parent db4f2d9dd8
commit 2f00b4e170
1 changed files with 24 additions and 30 deletions

View File

@ -443,6 +443,27 @@ void PANEL_SETUP_TRACKS_AND_VIAS::AppendDiffPairs( const int aWidth, const int a
}
}
void removeSelectedRows( WX_GRID* aGrid )
{
wxArrayInt selectedRows = aGrid->GetSelectedRows();
int curRow = aGrid->GetGridCursorRow();
if( selectedRows.empty() && curRow >= 0 && curRow < aGrid->GetNumberRows() )
selectedRows.Add( curRow );
for( int ii = selectedRows.Count() - 1; ii >= 0; --ii )
{
int row = selectedRows.Item( ii );
aGrid->DeleteRows( row, 1 );
curRow = std::min( curRow, row );
}
curRow = std::max( 0, curRow - 1 );
aGrid->MakeCellVisible( curRow, aGrid->GetGridCursorCol() );
aGrid->SetGridCursor( curRow, aGrid->GetGridCursorCol() );
}
void PANEL_SETUP_TRACKS_AND_VIAS::OnAddTrackWidthsClick( wxCommandEvent& aEvent )
{
AppendTrackWidth( 0 );
@ -457,16 +478,7 @@ void PANEL_SETUP_TRACKS_AND_VIAS::OnAddTrackWidthsClick( wxCommandEvent& aEvent
void PANEL_SETUP_TRACKS_AND_VIAS::OnRemoveTrackWidthsClick( wxCommandEvent& event )
{
int curRow = m_trackWidthsGrid->GetGridCursorRow();
if( curRow < 0 || m_trackWidthsGrid->GetNumberRows() <= curRow )
return;
m_trackWidthsGrid->DeleteRows( curRow, 1 );
curRow = std::max( 0, curRow - 1 );
m_trackWidthsGrid->MakeCellVisible( curRow, m_trackWidthsGrid->GetGridCursorCol() );
m_trackWidthsGrid->SetGridCursor( curRow, m_trackWidthsGrid->GetGridCursorCol() );
removeSelectedRows( m_trackWidthsGrid );
}
@ -484,16 +496,7 @@ void PANEL_SETUP_TRACKS_AND_VIAS::OnAddViaSizesClick( wxCommandEvent& event )
void PANEL_SETUP_TRACKS_AND_VIAS::OnRemoveViaSizesClick( wxCommandEvent& event )
{
int curRow = m_viaSizesGrid->GetGridCursorRow();
if( curRow < 0 || m_viaSizesGrid->GetNumberRows() <= curRow )
return;
m_viaSizesGrid->DeleteRows( curRow, 1 );
curRow = std::max( 0, curRow - 1 );
m_viaSizesGrid->MakeCellVisible( curRow, m_viaSizesGrid->GetGridCursorCol() );
m_viaSizesGrid->SetGridCursor( curRow, m_viaSizesGrid->GetGridCursorCol() );
removeSelectedRows( m_viaSizesGrid );
}
@ -511,16 +514,7 @@ void PANEL_SETUP_TRACKS_AND_VIAS::OnAddDiffPairsClick( wxCommandEvent& event )
void PANEL_SETUP_TRACKS_AND_VIAS::OnRemoveDiffPairsClick( wxCommandEvent& event )
{
int curRow = m_diffPairsGrid->GetGridCursorRow();
if( curRow < 0 || m_diffPairsGrid->GetNumberRows() <= curRow )
return;
m_diffPairsGrid->DeleteRows( curRow, 1 );
curRow = std::max( 0, curRow - 1 );
m_diffPairsGrid->MakeCellVisible( curRow, m_diffPairsGrid->GetGridCursorCol() );
m_diffPairsGrid->SetGridCursor( curRow, m_diffPairsGrid->GetGridCursorCol() );
removeSelectedRows( m_diffPairsGrid );
}