]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/vlbox.cpp
Reflect changes in stc.cpp in stc.cpp.in from which it's generated.
[wxWidgets.git] / src / generic / vlbox.cpp
index 551177def5333d13ccb6fdc8eab48184ecb921ff..e277070b3dad75608ecdad9c8f99717c599643f0 100644 (file)
@@ -4,9 +4,8 @@
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     31.05.03
-// RCS-ID:      $Id$
 // Copyright:   (c) 2003 Vadim Zeitlin <vadim@wxwindows.org>
-// License:     wxWindows license
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
@@ -249,7 +248,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
@@ -272,7 +274,7 @@ void wxVListBox::SendSelectedEvent()
     wxASSERT_MSG( m_current != wxNOT_FOUND,
                     wxT("SendSelectedEvent() shouldn't be called") );
 
-    wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, GetId());
+    wxCommandEvent event(wxEVT_LISTBOX, GetId());
     InitEvent(event, m_current);
     (void)GetEventHandler()->ProcessEvent(event);
 }
@@ -605,14 +607,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 +625,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 +635,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();
@@ -711,7 +719,7 @@ void wxVListBox::OnLeftDClick(wxMouseEvent& eventMouse)
         // this event as a left-click instead
         if ( item == m_current )
         {
-            wxCommandEvent event(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, GetId());
+            wxCommandEvent event(wxEVT_LISTBOX_DCLICK, GetId());
             InitEvent(event, item);
             (void)GetEventHandler()->ProcessEvent(event);
         }