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:
Robert Roebling
2001-12-03 23:25:28 +00:00
parent 14b3f932dd
commit ed8c278040
2 changed files with 2564 additions and 2542 deletions

View File

@@ -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);
}
}
// ----------------------------------------------------------------------------

View File

@@ -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);
}
}
// ----------------------------------------------------------------------------