Add wxGridSelection::SelectAll() and use it in wxGrid
The difference between calling SelectAll() and SelectBlock() with a block covering the entire grid is that the former discards any previously selected blocks, which become clearly redundant. As a consequence, clicking on the grid corner 10 times in a row still results in a selection with a single block, not 10 (identical) blocks.
This commit is contained in:
@@ -52,6 +52,10 @@ public:
|
|||||||
kbd, sendEvent);
|
kbd, sendEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This function replaces all the existing selected blocks (which become
|
||||||
|
// redundant) with a single block covering the entire grid.
|
||||||
|
void SelectAll();
|
||||||
|
|
||||||
void DeselectBlock(const wxGridBlockCoords& block,
|
void DeselectBlock(const wxGridBlockCoords& block,
|
||||||
const wxKeyboardState& kbd = wxKeyboardState(),
|
const wxKeyboardState& kbd = wxKeyboardState(),
|
||||||
bool sendEvent = true );
|
bool sendEvent = true );
|
||||||
|
@@ -10235,11 +10235,8 @@ void wxGrid::SelectBlock(int topRow, int leftCol, int bottomRow, int rightCol,
|
|||||||
|
|
||||||
void wxGrid::SelectAll()
|
void wxGrid::SelectAll()
|
||||||
{
|
{
|
||||||
if ( m_numRows > 0 && m_numCols > 0 )
|
if ( m_selection )
|
||||||
{
|
m_selection->SelectAll();
|
||||||
if ( m_selection )
|
|
||||||
m_selection->SelectBlock( 0, 0, m_numRows - 1, m_numCols - 1 );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
@@ -194,6 +194,23 @@ void wxGridSelection::SelectBlock( int topRow, int leftCol,
|
|||||||
kbd, sendEvent);
|
kbd, sendEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
wxGridSelection::SelectAll()
|
||||||
|
{
|
||||||
|
// There is no need to refresh anything, as Select() will do it anyhow, and
|
||||||
|
// no need to generate any events, so do not call ClearSelection() here.
|
||||||
|
m_selection.clear();
|
||||||
|
|
||||||
|
const int numRows = m_grid->GetNumberRows();
|
||||||
|
const int numCols = m_grid->GetNumberCols();
|
||||||
|
|
||||||
|
if ( numRows && numCols )
|
||||||
|
{
|
||||||
|
Select(wxGridBlockCoords(0, 0, numRows - 1, numCols - 1),
|
||||||
|
wxKeyboardState(), true /* send event */);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
wxGridSelection::DeselectBlock(const wxGridBlockCoords& block,
|
wxGridSelection::DeselectBlock(const wxGridBlockCoords& block,
|
||||||
const wxKeyboardState& kbd,
|
const wxKeyboardState& kbd,
|
||||||
|
Reference in New Issue
Block a user