X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/20c84410479ba60b03289608a5e6893f2936133d..2461468b51c022278cc52ba7fd274f3bfedef7e8:/src/generic/grid.cpp diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp index 140e6333cd..753fcf01b7 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp @@ -221,7 +221,7 @@ private: void OnKeyDown( wxKeyEvent& ); void OnKeyUp( wxKeyEvent& ); void OnEraseBackground( wxEraseEvent& ); - + void OnFocus( wxFocusEvent& ); DECLARE_DYNAMIC_CLASS(wxGridWindow) DECLARE_EVENT_TABLE() @@ -668,7 +668,8 @@ bool wxGridCellTextEditor::EndEdit(int row, int col, 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; } @@ -3662,6 +3663,8 @@ BEGIN_EVENT_TABLE( wxGridWindow, wxWindow ) 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() @@ -3737,6 +3740,11 @@ void wxGridWindow::OnEraseBackground( wxEraseEvent& WXUNUSED(event) ) { } +void wxGridWindow::OnFocus(wxFocusEvent& event) +{ + if ( !m_owner->GetEventHandler()->ProcessEvent( event ) ) + event.Skip(); +} ////////////////////////////////////////////////////////////////////// @@ -4232,28 +4240,11 @@ void wxGrid::CalcDimensions() 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,