diff --git a/src/common/combocmn.cpp b/src/common/combocmn.cpp index f4b4510fd0..625f7bea0a 100644 --- a/src/common/combocmn.cpp +++ b/src/common/combocmn.cpp @@ -580,14 +580,17 @@ void wxComboBoxExtraInputHandler::OnKey(wxKeyEvent& event) { // Let the wxComboCtrl event handler have a go first. wxComboCtrlBase* combo = m_combo; - wxObject* prevObj = event.GetEventObject(); - event.SetId(combo->GetId()); - event.SetEventObject(combo); - combo->GetEventHandler()->ProcessEvent(event); + wxKeyEvent redirectedEvent(event); + redirectedEvent.SetId(combo->GetId()); + redirectedEvent.SetEventObject(combo); - event.SetId(((wxWindow*)prevObj)->GetId()); - event.SetEventObject(prevObj); + if ( !combo->GetEventHandler()->ProcessEvent(redirectedEvent) ) + { + // Don't let TAB through to the text ctrl - looks ugly + if ( event.GetKeyCode() != WXK_TAB ) + event.Skip(); + } } void wxComboBoxExtraInputHandler::OnFocus(wxFocusEvent& event) @@ -1602,7 +1605,8 @@ void wxComboCtrlBase::OnKeyEvent(wxKeyEvent& event) { int keycode = event.GetKeyCode(); - if ( keycode == WXK_TAB ) + if ( GetParent()->HasFlag(wxTAB_TRAVERSAL) && + keycode == WXK_TAB ) { wxNavigationKeyEvent evt;