X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a1665b22b07c572a240f9d83783044e3e4f9cb0e..4df78dc36e933fb1c3aa7c9d7ae2757a898ae05c:/src/generic/panelg.cpp?ds=sidebyside diff --git a/src/generic/panelg.cpp b/src/generic/panelg.cpp index a37cabb6ed..2ed8f5148c 100644 --- a/src/generic/panelg.cpp +++ b/src/generic/panelg.cpp @@ -101,7 +101,7 @@ void wxPanel::OnNavigationKey( wxNavigationKeyEvent& event ) wxWindow *winFocus = event.GetCurrentFocus(); if (!winFocus) winFocus = wxWindow::FindFocus(); - + if (!winFocus) { event.Skip(); @@ -126,14 +126,16 @@ void wxPanel::OnNavigationKey( wxNavigationKeyEvent& event ) // so give them the chance to process it instead of looping inside // this panel (normally, the focus will go to the next/previous // item after this panel in the parent panel) + wxWindow *focussed_child_of_p = this; for ( wxWindow *p = GetParent(); p; p = p->GetParent() ) { if ( wxDynamicCast(p, wxPanel) ) { - event.Skip(); - - return; + event.SetCurrentFocus( focussed_child_of_p ); + if (p->GetEventHandler()->ProcessEvent( event )) + return; } + focussed_child_of_p = p; } // no, we are not inside another panel so process this ourself