]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/vlbox.cpp
extending calculation of visible region
[wxWidgets.git] / src / generic / vlbox.cpp
index df023053a3a10b77a992c7571ee972e995a4f957..989f6f797d835b6b924089d183d9e105182b73e8 100644 (file)
@@ -68,6 +68,7 @@ bool wxVListBox::Create(wxWindow *parent,
                         long style,
                         const wxString& name)
 {
                         long style,
                         const wxString& name)
 {
+    style |= wxWANTS_CHARS;
     if ( !wxVScrolledWindow::Create(parent, id, pos, size, style, name) )
         return false;
 
     if ( !wxVScrolledWindow::Create(parent, id, pos, size, style, name) )
         return false;
 
@@ -75,6 +76,12 @@ bool wxVListBox::Create(wxWindow *parent,
         m_selStore = new wxSelectionStore;
 
     SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_LISTBOX));
         m_selStore = new wxSelectionStore;
 
     SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_LISTBOX));
+    SetForegroundColour(parent->GetForegroundColour());
+
+    // ensure that the font actually changes and is set.
+    SetFont(wxNullFont);
+    SetFont(parent->GetFont());
+
     m_colBgSel = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT);
 
     return true;
     m_colBgSel = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT);
 
     return true;
@@ -486,7 +493,7 @@ void wxVListBox::OnKeyDown(wxKeyEvent& event)
     // flags for DoHandleItemClick()
     int flags = ItemClick_Kbd;
 
     // flags for DoHandleItemClick()
     int flags = ItemClick_Kbd;
 
-    int current = 0; // just to silent the stupid compiler warnings
+    int current;
     switch ( event.GetKeyCode() )
     {
         case WXK_HOME:
     switch ( event.GetKeyCode() )
     {
         case WXK_HOME:
@@ -537,8 +544,23 @@ void wxVListBox::OnKeyDown(wxKeyEvent& event)
             current = m_current;
             break;
 
             current = m_current;
             break;
 
+#ifdef __WXMSW__
+        case WXK_TAB:
+            // Since we are using wxWANTS_CHARS we need to send navigation
+            // events for the tabs on MSW
+            {
+                wxNavigationKeyEvent ne;
+                ne.SetDirection(!event.ShiftDown());
+                ne.SetCurrentFocus(this);
+                ne.SetEventObject(this);
+                GetParent()->GetEventHandler()->ProcessEvent(ne);
+            }
+            // fall through to default
+#endif
         default:
             event.Skip();
         default:
             event.Skip();
+            current = 0; // just to silent the stupid compiler warnings
+            wxUnusedVar(current);
             return;
     }
 
             return;
     }