forward the char, key and text events from the textctrl

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33776 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn 2005-04-20 05:22:21 +00:00
parent 102b87c250
commit 4a5d352f8a

View File

@ -84,6 +84,14 @@ protected:
if (m_cb->GetParent()->GetEventHandler()->ProcessEvent(NavEvent))
return;
}
// send the event to the combobox class in case the user has bound EVT_CHAR
wxKeyEvent kevt(event);
kevt.SetEventObject(m_cb);
if (m_cb->GetEventHandler()->ProcessEvent(kevt))
// If the event was handled and not skipped then we're done
return;
if ( event.GetKeyCode() == WXK_RETURN )
{
wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_cb->GetId());
@ -119,18 +127,30 @@ protected:
event.Skip();
}
// Use the KeyUp as a naive approximation for TEXT_UPDATED, even though it is somewhat delayed
// but this is less complicated than dealing with idle-ness, and is much better than nothing
void OnKeyUp( wxKeyEvent& event )
{
if ( event.GetKeyCode() != WXK_RETURN && event.GetKeyCode() != WXK_TAB )
{
wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_cb->GetId());
event.SetString( GetValue() );
event.SetEventObject( m_cb );
m_cb->GetEventHandler()->ProcessEvent(event);
}
event.SetEventObject(m_cb);
event.SetId(m_cb->GetId());
if (! m_cb->GetEventHandler()->ProcessEvent(event))
event.Skip();
}
void OnKeyDown( wxKeyEvent& event )
{
event.SetEventObject(m_cb);
event.SetId(m_cb->GetId());
if (! m_cb->GetEventHandler()->ProcessEvent(event))
event.Skip();
}
void OnText( wxCommandEvent& event )
{
event.SetEventObject(m_cb);
event.SetId(m_cb->GetId());
if (! m_cb->GetEventHandler()->ProcessEvent(event))
event.Skip();
}
private:
wxComboBox *m_cb;
@ -138,8 +158,10 @@ private:
};
BEGIN_EVENT_TABLE(wxComboBoxText, wxTextCtrl)
EVT_CHAR( wxComboBoxText::OnChar)
EVT_KEY_UP( wxComboBoxText::OnKeyUp)
EVT_KEY_DOWN( wxComboBoxText::OnKeyDown)
EVT_CHAR( wxComboBoxText::OnChar)
EVT_KEY_UP( wxComboBoxText::OnKeyUp)
EVT_TEXT( -1, wxComboBoxText::OnText)
END_EVENT_TABLE()
class wxComboBoxChoice : public wxChoice