X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f408451314d8188b961711c16a22a7a901fdf2db..74b965198ce3a4257deac901b6f7517e6447ca0f:/src/common/combocmn.cpp diff --git a/src/common/combocmn.cpp b/src/common/combocmn.cpp index ea91647c2c..f037eb9dbd 100644 --- a/src/common/combocmn.cpp +++ b/src/common/combocmn.cpp @@ -465,6 +465,7 @@ private: BEGIN_EVENT_TABLE(wxComboPopupWindowEvtHandler, wxEvtHandler) EVT_KEY_DOWN(wxComboPopupWindowEvtHandler::OnKeyEvent) EVT_KEY_UP(wxComboPopupWindowEvtHandler::OnKeyEvent) + EVT_CHAR(wxComboPopupWindowEvtHandler::OnKeyEvent) #if USES_GENERICTLW EVT_ACTIVATE(wxComboPopupWindowEvtHandler::OnActivate) #endif @@ -483,7 +484,7 @@ void wxComboPopupWindowEvtHandler::OnKeyEvent( wxKeyEvent& event ) wxWindowList children = m_combo->GetPopupWindow()->GetChildren(); wxWindowList::iterator node = children.begin(); wxWindow* child = (wxWindow*)*node; - child->GetEventHandler()->AddPendingEvent(event); + child->GetEventHandler()->ProcessEvent(event); } #if USES_GENERICTLW @@ -552,6 +553,11 @@ void wxComboPopup::OnComboKeyEvent( wxKeyEvent& event ) event.Skip(); } +void wxComboPopup::OnComboCharEvent( wxKeyEvent& event ) +{ + event.Skip(); +} + void wxComboPopup::OnComboDoubleClick() { } @@ -780,6 +786,7 @@ BEGIN_EVENT_TABLE(wxComboCtrlBase, wxControl) EVT_IDLE(wxComboCtrlBase::OnIdleEvent) //EVT_BUTTON(wxID_ANY,wxComboCtrlBase::OnButtonClickEvent) EVT_KEY_DOWN(wxComboCtrlBase::OnKeyEvent) + EVT_CHAR(wxComboCtrlBase::OnCharEvent) EVT_TEXT_ENTER(wxID_ANY,wxComboCtrlBase::OnTextCtrlEvent) EVT_SYS_COLOUR_CHANGED(wxComboCtrlBase::OnSysColourChanged) END_EVENT_TABLE() @@ -1760,7 +1767,7 @@ void wxComboCtrlBase::HandleNormalMouseEvent( wxMouseEvent& event ) if ( IsPopupShown() ) { // relay (some) mouse events to the popup - m_popup->GetEventHandler()->AddPendingEvent(event); + m_popup->GetEventHandler()->ProcessEvent(event); } else if ( event.GetWheelAxis() == 0 && event.GetWheelRotation() != 0 && @@ -1773,7 +1780,7 @@ void wxComboCtrlBase::HandleNormalMouseEvent( wxMouseEvent& event ) kevent.m_keyCode = event.GetWheelRotation() > 0 ? WXK_UP : WXK_DOWN; - GetEventHandler()->AddPendingEvent(kevent); + GetEventHandler()->ProcessEvent(kevent); } else { @@ -1791,7 +1798,7 @@ void wxComboCtrlBase::OnKeyEvent(wxKeyEvent& event) if ( IsPopupShown() ) { // pass it to the popped up control - GetPopupControl()->GetControl()->GetEventHandler()->AddPendingEvent(event); + GetPopupControl()->GetControl()->GetEventHandler()->ProcessEvent(event); } else // no popup { @@ -1830,6 +1837,27 @@ void wxComboCtrlBase::OnKeyEvent(wxKeyEvent& event) } } +void wxComboCtrlBase::OnCharEvent(wxKeyEvent& event) +{ + if ( IsPopupShown() ) + { + // pass it to the popped up control + GetPopupControl()->GetControl()->GetEventHandler()->ProcessEvent(event); + } + else // no popup + { + wxComboPopup* popupInterface = GetPopupControl(); + if ( popupInterface ) + { + popupInterface->OnComboCharEvent(event); + } + else + { + event.Skip(); + } + } +} + void wxComboCtrlBase::OnFocusEvent( wxFocusEvent& event ) { if ( event.GetEventType() == wxEVT_SET_FOCUS )