WX_DEFINE_OBJARRAY(wxGridCellCoordsArray)
WX_DEFINE_OBJARRAY(wxGridCellWithAttrArray)
+// ----------------------------------------------------------------------------
+// events
+// ----------------------------------------------------------------------------
+
+DEFINE_EVENT_TYPE(wxEVT_GRID_CELL_LEFT_CLICK)
+DEFINE_EVENT_TYPE(wxEVT_GRID_CELL_RIGHT_CLICK)
+DEFINE_EVENT_TYPE(wxEVT_GRID_CELL_LEFT_DCLICK)
+DEFINE_EVENT_TYPE(wxEVT_GRID_CELL_RIGHT_DCLICK)
+DEFINE_EVENT_TYPE(wxEVT_GRID_LABEL_LEFT_CLICK)
+DEFINE_EVENT_TYPE(wxEVT_GRID_LABEL_RIGHT_CLICK)
+DEFINE_EVENT_TYPE(wxEVT_GRID_LABEL_LEFT_DCLICK)
+DEFINE_EVENT_TYPE(wxEVT_GRID_LABEL_RIGHT_DCLICK)
+DEFINE_EVENT_TYPE(wxEVT_GRID_ROW_SIZE)
+DEFINE_EVENT_TYPE(wxEVT_GRID_COL_SIZE)
+DEFINE_EVENT_TYPE(wxEVT_GRID_RANGE_SELECT)
+DEFINE_EVENT_TYPE(wxEVT_GRID_CELL_CHANGE)
+DEFINE_EVENT_TYPE(wxEVT_GRID_SELECT_CELL)
+DEFINE_EVENT_TYPE(wxEVT_GRID_EDITOR_SHOWN)
+DEFINE_EVENT_TYPE(wxEVT_GRID_EDITOR_HIDDEN)
+
// ----------------------------------------------------------------------------
// private classes
// ----------------------------------------------------------------------------
bool wxGridCellEditor::IsAcceptedKey(wxKeyEvent& event)
{
// accept the simple key presses, not anything with Ctrl/Alt/Meta
- return !event.HasModifiers();
+ return !(event.ControlDown() || event.AltDown());
}
void wxGridCellEditor::StartingKey(wxKeyEvent& event)
break;
case WXK_TAB:
- event.Skip( m_grid->ProcessEvent( event ) );
+ event.Skip( m_grid->GetEventHandler()->ProcessEvent( event ) );
break;
+ case WXK_NUMPAD_ENTER:
case WXK_RETURN:
- if (!m_grid->ProcessEvent(event))
+ if ( !m_grid->GetEventHandler()->ProcessEvent(event) )
m_editor->HandleReturn(event);
break;
case WXK_ESCAPE:
case WXK_TAB:
case WXK_RETURN:
+ case WXK_NUMPAD_ENTER:
break;
default:
//
void wxGridRowLabelWindow::OnKeyDown( wxKeyEvent& event )
{
- if ( !m_owner->ProcessEvent( event ) ) event.Skip();
+ if ( !m_owner->GetEventHandler()->ProcessEvent( event ) ) event.Skip();
}
void wxGridRowLabelWindow::OnKeyUp( wxKeyEvent& event )
{
- if ( !m_owner->ProcessEvent( event ) ) event.Skip();
+ if ( !m_owner->GetEventHandler()->ProcessEvent( event ) ) event.Skip();
}
//
void wxGridColLabelWindow::OnKeyDown( wxKeyEvent& event )
{
- if ( !m_owner->ProcessEvent( event ) ) event.Skip();
+ if ( !m_owner->GetEventHandler()->ProcessEvent( event ) ) event.Skip();
}
void wxGridColLabelWindow::OnKeyUp( wxKeyEvent& event )
{
- if ( !m_owner->ProcessEvent( event ) ) event.Skip();
+ if ( !m_owner->GetEventHandler()->ProcessEvent( event ) ) event.Skip();
}
//
void wxGridCornerLabelWindow::OnKeyDown( wxKeyEvent& event )
{
- if ( !m_owner->ProcessEvent( event ) ) event.Skip();
+ if ( !m_owner->GetEventHandler()->ProcessEvent( event ) ) event.Skip();
}
void wxGridCornerLabelWindow::OnKeyUp( wxKeyEvent& event )
{
- if ( !m_owner->ProcessEvent( event ) ) event.Skip();
+ if ( !m_owner->GetEventHandler()->ProcessEvent( event ) ) event.Skip();
}
//
void wxGridWindow::OnKeyDown( wxKeyEvent& event )
{
- if ( !m_owner->ProcessEvent( event ) ) event.Skip();
+ if ( !m_owner->GetEventHandler()->ProcessEvent( event ) ) event.Skip();
}
void wxGridWindow::OnKeyUp( wxKeyEvent& event )
{
- if ( !m_owner->ProcessEvent( event ) ) event.Skip();
+ if ( !m_owner->GetEventHandler()->ProcessEvent( event ) ) event.Skip();
}
void wxGridWindow::OnEraseBackground( wxEraseEvent& WXUNUSED(event) )
break;
case WXK_RETURN:
+ case WXK_NUMPAD_ENTER:
if ( event.ControlDown() )
{
event.Skip(); // to let the edit control have the return
if ( column )
dc.GetTextExtent( GetColLabelValue(col), &w, &h );
else
- dc.GetTextExtent( GetRowLabelValue(col), &w, &h );
+ dc.GetTextExtent( GetRowLabelValue(row), &w, &h );
extent = column ? w : h;
if ( extent > extentMax )
m_selection->SelectBlock( 0, 0, m_numRows-1, m_numCols-1 );
}
+//
+// ------ Cell, row and col deselection
+//
+
+void wxGrid::DeselectRow( int row )
+{
+ if ( m_selection->GetSelectionMode() == wxGrid::wxGridSelectRows )
+ {
+ if ( m_selection->IsInSelection(row, 0 ) )
+ m_selection->ToggleCellSelection( row, 0);
+ }
+ else
+ {
+ int nCols = GetNumberCols();
+ for ( int i = 0; i < nCols ; i++ )
+ {
+ if ( m_selection->IsInSelection(row, i ) )
+ m_selection->ToggleCellSelection( row, i);
+ }
+ }
+}
+
+void wxGrid::DeselectCol( int col )
+{
+ if ( m_selection->GetSelectionMode() == wxGrid::wxGridSelectColumns )
+ {
+ if ( m_selection->IsInSelection(0, col ) )
+ m_selection->ToggleCellSelection( 0, col);
+ }
+ else
+ {
+ int nRows = GetNumberRows();
+ for ( int i = 0; i < nRows ; i++ )
+ {
+ if ( m_selection->IsInSelection(i, col ) )
+ m_selection->ToggleCellSelection(i, col);
+ }
+ }
+}
+
+void wxGrid::DeselectCell( int row, int col )
+{
+ if ( m_selection->IsInSelection(row, col) )
+ m_selection->ToggleCellSelection(row, col);
+}
+
bool wxGrid::IsSelection()
{
return ( m_selection->IsSelection() ||