X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/93763ad5ba900aecb9220a36ebe7447313ea3e31..f51723055aa4334a355a19e87bb2b478b4204d15:/src/generic/gridsel.cpp diff --git a/src/generic/gridsel.cpp b/src/generic/gridsel.cpp index f89835df90..f87c037888 100644 --- a/src/generic/gridsel.cpp +++ b/src/generic/gridsel.cpp @@ -160,9 +160,8 @@ void wxGridSelection::SetSelectionMode( wxGrid::wxGridSelectionModes selmode ) { m_blockSelectionTopLeft.RemoveAt(n); m_blockSelectionBottomRight.RemoveAt(n); - SelectBlock( topRow, 0, - bottomRow, m_grid->GetNumberCols() - 1, - false, false, false, false, false ); + SelectBlockNoEvent( topRow, 0, + bottomRow, m_grid->GetNumberCols() - 1); } } else // selmode == wxGridSelectColumns) @@ -171,9 +170,8 @@ void wxGridSelection::SetSelectionMode( wxGrid::wxGridSelectionModes selmode ) { m_blockSelectionTopLeft.RemoveAt(n); m_blockSelectionBottomRight.RemoveAt(n); - SelectBlock( 0, leftCol, - m_grid->GetNumberRows() - 1, rightCol, - false, false, false, false, false ); + SelectBlockNoEvent(0, leftCol, + m_grid->GetNumberRows() - 1, rightCol); } } } @@ -182,9 +180,7 @@ void wxGridSelection::SetSelectionMode( wxGrid::wxGridSelectionModes selmode ) } } -void wxGridSelection::SelectRow( int row, - bool ControlDown, bool ShiftDown, - bool AltDown, bool MetaDown ) +void wxGridSelection::SelectRow(int row, const wxKeyboardState& kbd) { if ( m_selectionMode == wxGrid::wxGridSelectColumns ) return; @@ -275,15 +271,12 @@ void wxGridSelection::SelectRow( int row, wxGridCellCoords( row, 0 ), wxGridCellCoords( row, m_grid->GetNumberCols() - 1 ), true, - ControlDown, ShiftDown, - AltDown, MetaDown ); + kbd); m_grid->GetEventHandler()->ProcessEvent( gridEvt ); } -void wxGridSelection::SelectCol( int col, - bool ControlDown, bool ShiftDown, - bool AltDown, bool MetaDown ) +void wxGridSelection::SelectCol(int col, const wxKeyboardState& kbd) { if ( m_selectionMode == wxGrid::wxGridSelectRows ) return; @@ -372,28 +365,41 @@ void wxGridSelection::SelectCol( int col, wxGridCellCoords( 0, col ), wxGridCellCoords( m_grid->GetNumberRows() - 1, col ), true, - ControlDown, ShiftDown, - AltDown, MetaDown ); + kbd ); m_grid->GetEventHandler()->ProcessEvent( gridEvt ); } void wxGridSelection::SelectBlock( int topRow, int leftCol, int bottomRow, int rightCol, - bool ControlDown, bool ShiftDown, - bool AltDown, bool MetaDown, + const wxKeyboardState& kbd, bool sendEvent ) { // Fix the coordinates of the block if needed. - if ( m_selectionMode == wxGrid::wxGridSelectRows ) - { - leftCol = 0; - rightCol = m_grid->GetNumberCols() - 1; - } - else if ( m_selectionMode == wxGrid::wxGridSelectColumns ) + switch ( m_selectionMode ) { - topRow = 0; - bottomRow = m_grid->GetNumberRows() - 1; + default: + wxFAIL_MSG( "unknown selection mode" ); + // fall through + + case wxGrid::wxGridSelectCells: + // nothing to do -- in this mode arbitrary blocks can be selected + break; + + case wxGrid::wxGridSelectRows: + leftCol = 0; + rightCol = m_grid->GetNumberCols() - 1; + break; + + case wxGrid::wxGridSelectColumns: + topRow = 0; + bottomRow = m_grid->GetNumberRows() - 1; + break; + + case wxGrid::wxGridSelectRowsOrColumns: + // block selection doesn't make sense for this mode, we could only + // select the entire grid but this wouldn't be useful + return; } if ( topRow > bottomRow ) @@ -417,8 +423,7 @@ void wxGridSelection::SelectBlock( int topRow, int leftCol, if ( m_selectionMode == wxGrid::wxGridSelectCells && topRow == bottomRow && leftCol == rightCol ) { - SelectCell( topRow, leftCol, ControlDown, ShiftDown, - AltDown, MetaDown, sendEvent ); + SelectCell( topRow, leftCol, kbd, sendEvent ); } size_t count, n; @@ -538,28 +543,24 @@ void wxGridSelection::SelectBlock( int topRow, int leftCol, wxGridCellCoords( topRow, leftCol ), wxGridCellCoords( bottomRow, rightCol ), true, - ControlDown, ShiftDown, - AltDown, MetaDown ); + kbd); m_grid->GetEventHandler()->ProcessEvent( gridEvt ); } } void wxGridSelection::SelectCell( int row, int col, - bool ControlDown, bool ShiftDown, - bool AltDown, bool MetaDown, + const wxKeyboardState& kbd, bool sendEvent ) { if ( m_selectionMode == wxGrid::wxGridSelectRows ) { - SelectBlock(row, 0, row, m_grid->GetNumberCols() - 1, - ControlDown, ShiftDown, AltDown, MetaDown, sendEvent); + SelectBlock(row, 0, row, m_grid->GetNumberCols() - 1, kbd, sendEvent); return; } else if ( m_selectionMode == wxGrid::wxGridSelectColumns ) { - SelectBlock(0, col, m_grid->GetNumberRows() - 1, col, - ControlDown, ShiftDown, AltDown, MetaDown, sendEvent); + SelectBlock(0, col, m_grid->GetNumberRows() - 1, col, kbd, sendEvent); return; } @@ -586,20 +587,19 @@ void wxGridSelection::SelectCell( int row, int col, wxGridCellCoords( row, col ), wxGridCellCoords( row, col ), true, - ControlDown, ShiftDown, - AltDown, MetaDown ); + kbd); m_grid->GetEventHandler()->ProcessEvent( gridEvt ); } } -void wxGridSelection::ToggleCellSelection( int row, int col, - bool ControlDown, bool ShiftDown, - bool AltDown, bool MetaDown ) +void +wxGridSelection::ToggleCellSelection(int row, int col, + const wxKeyboardState& kbd) { // if the cell is not selected, select it if ( !IsInSelection ( row, col ) ) { - SelectCell( row, col, ControlDown, ShiftDown, AltDown, MetaDown ); + SelectCell(row, col, kbd); return; } @@ -636,8 +636,7 @@ void wxGridSelection::ToggleCellSelection( int row, int col, wxGridCellCoords( row, col ), wxGridCellCoords( row, col ), false, - ControlDown, ShiftDown, - AltDown, MetaDown ); + kbd ); m_grid->GetEventHandler()->ProcessEvent( gridEvt ); return; @@ -686,21 +685,17 @@ void wxGridSelection::ToggleCellSelection( int row, int col, if ( m_selectionMode != wxGrid::wxGridSelectColumns ) { if ( topRow < row ) - SelectBlock( topRow, leftCol, row - 1, rightCol, - false, false, false, false, false ); + SelectBlockNoEvent(topRow, leftCol, row - 1, rightCol); if ( bottomRow > row ) - SelectBlock( row + 1, leftCol, bottomRow, rightCol, - false, false, false, false, false ); + SelectBlockNoEvent(row + 1, leftCol, bottomRow, rightCol); } if ( m_selectionMode != wxGrid::wxGridSelectRows ) { if ( leftCol < col ) - SelectBlock( row, leftCol, row, col - 1, - false, false, false, false, false ); + SelectBlockNoEvent(row, leftCol, row, col - 1); if ( rightCol > col ) - SelectBlock( row, col + 1, row, rightCol, - false, false, false, false, false ); + SelectBlockNoEvent(row, col + 1, row, rightCol); } } } @@ -720,12 +715,10 @@ void wxGridSelection::ToggleCellSelection( int row, int col, if (m_selectionMode == wxGrid::wxGridSelectCells) { if ( col > 0 ) - SelectBlock( row, 0, row, col - 1, - false, false, false, false, false ); + SelectBlockNoEvent(row, 0, row, col - 1); if ( col < m_grid->GetNumberCols() - 1 ) - SelectBlock( row, col + 1, - row, m_grid->GetNumberCols() - 1, - false, false, false, false, false ); + SelectBlockNoEvent( row, col + 1, + row, m_grid->GetNumberCols() - 1); } } } @@ -746,12 +739,10 @@ void wxGridSelection::ToggleCellSelection( int row, int col, if (m_selectionMode == wxGrid::wxGridSelectCells) { if ( row > 0 ) - SelectBlock( 0, col, row - 1, col, - false, false, false, false, false ); + SelectBlockNoEvent(0, col, row - 1, col); if ( row < m_grid->GetNumberRows() - 1 ) - SelectBlock( row + 1, col, - m_grid->GetNumberRows() - 1, col, - false, false, false, false, false ); + SelectBlockNoEvent(row + 1, col, + m_grid->GetNumberRows() - 1, col); } } } @@ -778,8 +769,7 @@ void wxGridSelection::ToggleCellSelection( int row, int col, wxGridCellCoords( row, col ), wxGridCellCoords( row, col ), false, - ControlDown, ShiftDown, - AltDown, MetaDown ); + kbd ); m_grid->GetEventHandler()->ProcessEvent( gridEvt ); } break; @@ -800,8 +790,7 @@ void wxGridSelection::ToggleCellSelection( int row, int col, wxGridCellCoords( row, 0 ), wxGridCellCoords( row, m_grid->GetNumberCols() - 1 ), false, - ControlDown, ShiftDown, - AltDown, MetaDown ); + kbd ); m_grid->GetEventHandler()->ProcessEvent( gridEvt ); } break; @@ -822,8 +811,7 @@ void wxGridSelection::ToggleCellSelection( int row, int col, wxGridCellCoords( 0, col ), wxGridCellCoords( m_grid->GetNumberRows() - 1, col ), false, - ControlDown, ShiftDown, - AltDown, MetaDown ); + kbd ); m_grid->GetEventHandler()->ProcessEvent( gridEvt ); } break;