Make wxMac single line text control ignore ENTER
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12850 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -665,15 +665,18 @@ void wxTextCtrl::OnDropFiles(wxDropFilesEvent& event)
|
||||
}
|
||||
}
|
||||
|
||||
void wxTextCtrl::OnChar(wxKeyEvent& event)
|
||||
void wxTextCtrl::OnChar(wxKeyEvent& key_event)
|
||||
{
|
||||
switch ( event.KeyCode() )
|
||||
bool eat_key = FALSE;
|
||||
|
||||
switch ( key_event.KeyCode() )
|
||||
{
|
||||
case WXK_RETURN:
|
||||
if (m_windowStyle & wxPROCESS_ENTER)
|
||||
{
|
||||
wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId);
|
||||
event.SetEventObject( this );
|
||||
event.SetString( GetValue() );
|
||||
if ( GetEventHandler()->ProcessEvent(event) )
|
||||
return;
|
||||
}
|
||||
@@ -698,8 +701,12 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
|
||||
return ;
|
||||
}
|
||||
}
|
||||
|
||||
// this will make wxWindows eat the ENTER key so that
|
||||
// we actually prevent line wrapping in a single line
|
||||
// text control
|
||||
eat_key = TRUE;
|
||||
}
|
||||
//else: multiline controls need Enter for themselves
|
||||
|
||||
break;
|
||||
|
||||
@@ -710,32 +717,36 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
|
||||
// do its default job.
|
||||
{
|
||||
wxNavigationKeyEvent eventNav;
|
||||
eventNav.SetDirection(!event.ShiftDown());
|
||||
eventNav.SetWindowChange(event.ControlDown());
|
||||
eventNav.SetDirection(!key_event.ShiftDown());
|
||||
eventNav.SetWindowChange(key_event.ControlDown());
|
||||
eventNav.SetEventObject(this);
|
||||
|
||||
if ( GetParent()->GetEventHandler()->ProcessEvent(eventNav) )
|
||||
return;
|
||||
event.Skip() ;
|
||||
return ;
|
||||
|
||||
key_event.Skip() ;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
EventRecord *ev = wxTheApp->MacGetCurrentEvent() ;
|
||||
short keycode ;
|
||||
short keychar ;
|
||||
keychar = short(ev->message & charCodeMask);
|
||||
keycode = short(ev->message & keyCodeMask) >> 8 ;
|
||||
::HandleControlKey( m_macControl , keycode , keychar , ev->modifiers ) ;
|
||||
if ( keychar >= 0x20 || event.KeyCode() == WXK_RETURN || event.KeyCode() == WXK_DELETE || event.KeyCode() == WXK_BACK)
|
||||
EventRecord *ev = wxTheApp->MacGetCurrentEvent();
|
||||
short keychar = short(ev->message & charCodeMask);
|
||||
if (!eat_key)
|
||||
{
|
||||
short keycode = short(ev->message & keyCodeMask) >> 8 ;
|
||||
::HandleControlKey( m_macControl , keycode , keychar , ev->modifiers );
|
||||
}
|
||||
if ( keychar >= 0x20 ||
|
||||
key_event.KeyCode() == WXK_RETURN ||
|
||||
key_event.KeyCode() == WXK_DELETE ||
|
||||
key_event.KeyCode() == WXK_BACK)
|
||||
{
|
||||
wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId);
|
||||
event.SetString( GetValue() ) ;
|
||||
event.SetEventObject( this );
|
||||
GetEventHandler()->ProcessEvent(event);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@@ -665,15 +665,18 @@ void wxTextCtrl::OnDropFiles(wxDropFilesEvent& event)
|
||||
}
|
||||
}
|
||||
|
||||
void wxTextCtrl::OnChar(wxKeyEvent& event)
|
||||
void wxTextCtrl::OnChar(wxKeyEvent& key_event)
|
||||
{
|
||||
switch ( event.KeyCode() )
|
||||
bool eat_key = FALSE;
|
||||
|
||||
switch ( key_event.KeyCode() )
|
||||
{
|
||||
case WXK_RETURN:
|
||||
if (m_windowStyle & wxPROCESS_ENTER)
|
||||
{
|
||||
wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId);
|
||||
event.SetEventObject( this );
|
||||
event.SetString( GetValue() );
|
||||
if ( GetEventHandler()->ProcessEvent(event) )
|
||||
return;
|
||||
}
|
||||
@@ -698,8 +701,12 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
|
||||
return ;
|
||||
}
|
||||
}
|
||||
|
||||
// this will make wxWindows eat the ENTER key so that
|
||||
// we actually prevent line wrapping in a single line
|
||||
// text control
|
||||
eat_key = TRUE;
|
||||
}
|
||||
//else: multiline controls need Enter for themselves
|
||||
|
||||
break;
|
||||
|
||||
@@ -710,32 +717,36 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
|
||||
// do its default job.
|
||||
{
|
||||
wxNavigationKeyEvent eventNav;
|
||||
eventNav.SetDirection(!event.ShiftDown());
|
||||
eventNav.SetWindowChange(event.ControlDown());
|
||||
eventNav.SetDirection(!key_event.ShiftDown());
|
||||
eventNav.SetWindowChange(key_event.ControlDown());
|
||||
eventNav.SetEventObject(this);
|
||||
|
||||
if ( GetParent()->GetEventHandler()->ProcessEvent(eventNav) )
|
||||
return;
|
||||
event.Skip() ;
|
||||
return ;
|
||||
|
||||
key_event.Skip() ;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
EventRecord *ev = wxTheApp->MacGetCurrentEvent() ;
|
||||
short keycode ;
|
||||
short keychar ;
|
||||
keychar = short(ev->message & charCodeMask);
|
||||
keycode = short(ev->message & keyCodeMask) >> 8 ;
|
||||
::HandleControlKey( m_macControl , keycode , keychar , ev->modifiers ) ;
|
||||
if ( keychar >= 0x20 || event.KeyCode() == WXK_RETURN || event.KeyCode() == WXK_DELETE || event.KeyCode() == WXK_BACK)
|
||||
EventRecord *ev = wxTheApp->MacGetCurrentEvent();
|
||||
short keychar = short(ev->message & charCodeMask);
|
||||
if (!eat_key)
|
||||
{
|
||||
short keycode = short(ev->message & keyCodeMask) >> 8 ;
|
||||
::HandleControlKey( m_macControl , keycode , keychar , ev->modifiers );
|
||||
}
|
||||
if ( keychar >= 0x20 ||
|
||||
key_event.KeyCode() == WXK_RETURN ||
|
||||
key_event.KeyCode() == WXK_DELETE ||
|
||||
key_event.KeyCode() == WXK_BACK)
|
||||
{
|
||||
wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId);
|
||||
event.SetString( GetValue() ) ;
|
||||
event.SetEventObject( this );
|
||||
GetEventHandler()->ProcessEvent(event);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user