]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/panelg.cpp
Improved handling of selection/deselection events.
[wxWidgets.git] / src / generic / panelg.cpp
index 4c58bd15a1ddde5eec181b19ce7806c295aa92a0..2a91143d97638293a2045f0f7321136822d40408 100644 (file)
@@ -121,11 +121,11 @@ void wxPanel::OnSize(wxSizeEvent& WXUNUSED(event))
 
 void wxPanel::OnNavigationKey( wxNavigationKeyEvent& event )
 {
-    // the event is propagated downwards if the event emitter was our parent
-    bool goingDown = event.GetEventObject() == GetParent();
+    const wxWindowList& children = GetChildren();
 
-    // we're not interested in "notebook page change" events here
-    if ( event.IsWindowChange() )
+    // there is not much to do if we don't have children and we're not
+    // interested in "notebook page change" events here
+    if ( !children.GetCount() || event.IsWindowChange() )
     {
         wxWindow *parent = GetParent();
         if ( !parent || !parent->GetEventHandler()->ProcessEvent(event) )
@@ -143,7 +143,8 @@ void wxPanel::OnNavigationKey( wxNavigationKeyEvent& event )
     // next acceptable child
     wxWindowList::Node *node, *start_node;
 
-    const wxWindowList& children = GetChildren();
+    // the event is propagated downwards if the event emitter was our parent
+    bool goingDown = event.GetEventObject() == GetParent();
 
     // we should start from the first/last control and not from the one which
     // had focus the last time if we're propagating the event downwards because
@@ -273,6 +274,7 @@ void wxPanel::OnNavigationKey( wxNavigationKeyEvent& event )
             }
             //else: the child manages its focus itself
 
+            event.Skip( FALSE );
             return;
         }