Implement wxGrid cells selection for Home and End keys

Select cells if Shift is pressed when handling Home and End keys
This commit is contained in:
Ilya Sinitsyn 2020-01-28 02:42:27 +07:00 committed by Leland Lucius
parent a2d7c7210b
commit 9076d9186c

View File

@ -5479,7 +5479,10 @@ void wxGrid::OnKeyDown( wxKeyEvent& event )
if ( m_currentCellCoords == wxGridNoCellCoords )
break;
int row = m_currentCellCoords.GetRow();
const bool useSelectedBlockCorner =
event.ShiftDown() && m_selectedBlockCorner != wxGridNoCellCoords;
int row = useSelectedBlockCorner ? m_selectedBlockCorner.GetRow()
: m_currentCellCoords.GetRow();
if ( event.ControlDown() )
{
row = 0;
@ -5500,8 +5503,17 @@ void wxGrid::OnKeyDown( wxKeyEvent& event )
break;
}
ClearSelection();
GoToCell(row, GetColAt(col));
if ( event.ShiftDown() )
{
UpdateBlockBeingSelected(m_currentCellCoords,
wxGridCellCoords(row, col));
MakeCellVisible(row, col);
}
else
{
ClearSelection();
GoToCell(row, GetColAt(col));
}
}
break;
@ -5510,7 +5522,10 @@ void wxGrid::OnKeyDown( wxKeyEvent& event )
if ( m_currentCellCoords == wxGridNoCellCoords )
break;
int row = m_currentCellCoords.GetRow();
const bool useSelectedBlockCorner =
event.ShiftDown() && m_selectedBlockCorner != wxGridNoCellCoords;
int row = useSelectedBlockCorner ? m_selectedBlockCorner.GetRow()
: m_currentCellCoords.GetRow();
if ( event.ControlDown() )
{
row = m_numRows - 1;
@ -5531,8 +5546,17 @@ void wxGrid::OnKeyDown( wxKeyEvent& event )
break;
}
ClearSelection();
GoToCell(row, GetColAt(col));
if ( event.ShiftDown() )
{
UpdateBlockBeingSelected(m_currentCellCoords,
wxGridCellCoords(row, col));
MakeCellVisible(row, col);
}
else
{
ClearSelection();
GoToCell(row, GetColAt(col));
}
}
break;