]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/vlbox.cpp
Ensure there is valid context for DrawRectangle
[wxWidgets.git] / src / generic / vlbox.cpp
index 551177def5333d13ccb6fdc8eab48184ecb921ff..a4be49817cd791da694ac7de3c39fa29d2092b86 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     31.05.03
 // RCS-ID:      $Id$
 // Copyright:   (c) 2003 Vadim Zeitlin <vadim@wxwindows.org>
-// License:     wxWindows license
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
@@ -249,7 +249,10 @@ bool wxVListBox::DoSetCurrent(int current)
         {
             // it is, indeed, only partly visible, so scroll it into view to
             // make it entirely visible
+            // BUT scrolling down when m_current is first visible makes it
+            // completely hidden, so that is even worse
             while ( (size_t)m_current + 1 == GetVisibleRowsEnd() &&
+                    (size_t)m_current != GetVisibleRowsBegin() &&
                     ScrollToRow(GetVisibleBegin() + 1) ) ;
 
             // but in any case refresh it as even if it was only partly visible
@@ -605,14 +608,17 @@ void wxVListBox::OnKeyDown(wxKeyEvent& event)
     switch ( event.GetKeyCode() )
     {
         case WXK_HOME:
+        case WXK_NUMPAD_HOME:
             current = 0;
             break;
 
         case WXK_END:
+        case WXK_NUMPAD_END:
             current = GetRowCount() - 1;
             break;
 
         case WXK_DOWN:
+        case WXK_NUMPAD_DOWN:
             if ( m_current == (int)GetRowCount() - 1 )
                 return;
 
@@ -620,6 +626,7 @@ void wxVListBox::OnKeyDown(wxKeyEvent& event)
             break;
 
         case WXK_UP:
+        case WXK_NUMPAD_UP:
             if ( m_current == wxNOT_FOUND )
                 current = GetRowCount() - 1;
             else if ( m_current != 0 )
@@ -629,11 +636,13 @@ void wxVListBox::OnKeyDown(wxKeyEvent& event)
             break;
 
         case WXK_PAGEDOWN:
+        case WXK_NUMPAD_PAGEDOWN:
             PageDown();
             current = GetVisibleBegin();
             break;
 
         case WXK_PAGEUP:
+        case WXK_NUMPAD_PAGEUP:
             if ( m_current == (int)GetVisibleBegin() )
             {
                 PageUp();