Don't scroll the grid when starting a cell editor if it will already

fit in the viewable space.  The way it was always jumping around drove
me nuts!

Also, ensure that keys like HOME or END won't start the cell editor on
wxGTK2.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39281 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2006-05-23 02:17:39 +00:00
parent 6dc3c14ff2
commit e1a66d9a86

View File

@@ -570,6 +570,12 @@ bool wxGridCellEditor::IsAcceptedKey(wxKeyEvent& event)
int key = 0; int key = 0;
bool keyOk = true; bool keyOk = true;
#ifdef __WXGTK20__
// If it's a F-Key or other special key then it shouldn't start the
// editor.
if (event.GetKeyCode() >= WXK_START)
return false;
#endif
#if wxUSE_UNICODE #if wxUSE_UNICODE
// if the unicode key code is not really a unicode character (it may // if the unicode key code is not really a unicode character (it may
// be a function key or etc., the platforms appear to always give us a // be a function key or etc., the platforms appear to always give us a
@@ -7957,24 +7963,12 @@ void wxGrid::ShowCellEditControl()
editor->SetCellAttr( attr ); editor->SetCellAttr( attr );
editor->SetSize( rect ); editor->SetSize( rect );
editor->GetControl()->Move( if (nXMove != 0)
editor->GetControl()->GetPosition().x + nXMove, editor->GetControl()->Move(
editor->GetControl()->GetPosition().y ); editor->GetControl()->GetPosition().x + nXMove,
editor->GetControl()->GetPosition().y );
editor->Show( true, attr ); editor->Show( true, attr );
int colXPos = 0;
for (int i = 0; i < m_currentCellCoords.GetCol(); i++)
{
colXPos += GetColSize( i );
}
int xUnit = 1, yUnit = 1;
GetScrollPixelsPerUnit( &xUnit, &yUnit );
if (m_currentCellCoords.GetCol() != 0)
Scroll( colXPos / xUnit - 1, GetScrollPos( wxVERTICAL ) );
else
Scroll( colXPos / xUnit, GetScrollPos( wxVERTICAL ) );
// recalc dimensions in case we need to // recalc dimensions in case we need to
// expand the scrolled window to account for editor // expand the scrolled window to account for editor
CalcDimensions(); CalcDimensions();