void OnKeyDown( wxKeyEvent& );
void OnKeyUp( wxKeyEvent& );
void OnEraseBackground( wxEraseEvent& );
-
+ void OnFocus( wxFocusEvent& );
DECLARE_DYNAMIC_CLASS(wxGridWindow)
DECLARE_EVENT_TABLE()
grid->GetTable()->SetValue(row, col, value);
m_startValue = wxEmptyString;
- Text()->SetValue(m_startValue);
+ // No point in setting the text of the hidden control
+ //Text()->SetValue(m_startValue);
return changed;
}
wxWindowID id,
wxEvtHandler* evtHandler)
{
- size_t count = m_choices.GetCount();
- wxString *choices = new wxString[count];
- for ( size_t n = 0; n < count; n++ )
- {
- choices[n] = m_choices[n];
- }
-
m_control = new wxComboBox(parent, id, wxEmptyString,
wxDefaultPosition, wxDefaultSize,
- count, choices,
+ m_choices,
m_allowOthers ? 0 : wxCB_READONLY);
- delete [] choices;
-
wxGridCellEditor::Create(parent, id, evtHandler);
}
EVT_MOUSE_EVENTS( wxGridWindow::OnMouseEvent )
EVT_KEY_DOWN( wxGridWindow::OnKeyDown )
EVT_KEY_UP( wxGridWindow::OnKeyUp )
+ EVT_SET_FOCUS( wxGridWindow::OnFocus )
+ EVT_KILL_FOCUS( wxGridWindow::OnFocus )
EVT_ERASE_BACKGROUND( wxGridWindow::OnEraseBackground )
END_EVENT_TABLE()
{
}
+void wxGridWindow::OnFocus(wxFocusEvent& event)
+{
+ if ( !m_owner->GetEventHandler()->ProcessEvent( event ) )
+ event.Skip();
+}
//////////////////////////////////////////////////////////////////////
int x, y;
GetViewStart( &x, &y );
- // maybe we don't need scrollbars at all?
- //
- // also adjust the position to be valid for the new scroll rangs
- if ( w <= cw )
- {
- w = x = 0;
- }
- else
- {
- if ( x >= w )
- x = w - 1;
- }
-
- if ( h <= ch )
- {
- h = y = 0;
- }
- else
- {
- if ( y >= h )
- y = h - 1;
- }
+ // ensure the position is valid for the new scroll ranges
+ if ( x >= w )
+ x = wxMax( w - 1, 0 );
+ if ( y >= h )
+ y = wxMax( h - 1, 0 );
// do set scrollbar parameters
SetScrollbars( GRID_SCROLL_LINE_X, GRID_SCROLL_LINE_Y,
bool wxGrid::CanEnableCellControl() const
{
- return m_editable && !IsCurrentCellReadOnly();
+ return m_editable && (m_currentCellCoords != wxGridNoCellCoords) &&
+ !IsCurrentCellReadOnly();
+
}
bool wxGrid::IsCellEditControlEnabled() const
if ( coord >= BorderArray[i_max])
{
i_min = i_max;
- i_max = coord / minDist;
+ if (minDist)
+ i_max = coord / minDist;
+ else
+ i_max = BorderArray.GetCount() - 1;
}
if ( i_max >= BorderArray.GetCount())
i_max = BorderArray.GetCount() - 1;
void wxGrid::SetColMinimalAcceptableWidth( int width )
{
- if ( width<1 )
+ // We do allow a width of 0 since this gives us
+ // an easy way to temporarily hidding columns.
+ if ( width<0 )
return;
m_minAcceptableColWidth = width;
}
void wxGrid::SetRowMinimalAcceptableHeight( int height )
{
- if ( height<1 )
+ // We do allow a height of 0 since this gives us
+ // an easy way to temporarily hidding rows.
+ if ( height<0 )
return;
m_minAcceptableRowHeight = height;
};