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:
|
case WXK_RETURN:
|
||||||
if (m_windowStyle & wxPROCESS_ENTER)
|
if (m_windowStyle & wxPROCESS_ENTER)
|
||||||
{
|
{
|
||||||
wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId);
|
wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId);
|
||||||
event.SetEventObject( this );
|
event.SetEventObject( this );
|
||||||
|
event.SetString( GetValue() );
|
||||||
if ( GetEventHandler()->ProcessEvent(event) )
|
if ( GetEventHandler()->ProcessEvent(event) )
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -698,8 +701,12 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
|
|||||||
return ;
|
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;
|
break;
|
||||||
|
|
||||||
@@ -710,32 +717,36 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
|
|||||||
// do its default job.
|
// do its default job.
|
||||||
{
|
{
|
||||||
wxNavigationKeyEvent eventNav;
|
wxNavigationKeyEvent eventNav;
|
||||||
eventNav.SetDirection(!event.ShiftDown());
|
eventNav.SetDirection(!key_event.ShiftDown());
|
||||||
eventNav.SetWindowChange(event.ControlDown());
|
eventNav.SetWindowChange(key_event.ControlDown());
|
||||||
eventNav.SetEventObject(this);
|
eventNav.SetEventObject(this);
|
||||||
|
|
||||||
if ( GetParent()->GetEventHandler()->ProcessEvent(eventNav) )
|
if ( GetParent()->GetEventHandler()->ProcessEvent(eventNav) )
|
||||||
return;
|
return;
|
||||||
event.Skip() ;
|
|
||||||
|
key_event.Skip() ;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
EventRecord *ev = wxTheApp->MacGetCurrentEvent();
|
EventRecord *ev = wxTheApp->MacGetCurrentEvent();
|
||||||
short keycode ;
|
short keychar = short(ev->message & charCodeMask);
|
||||||
short keychar ;
|
if (!eat_key)
|
||||||
keychar = short(ev->message & charCodeMask);
|
{
|
||||||
keycode = short(ev->message & keyCodeMask) >> 8 ;
|
short keycode = short(ev->message & keyCodeMask) >> 8 ;
|
||||||
::HandleControlKey( m_macControl , keycode , keychar , ev->modifiers );
|
::HandleControlKey( m_macControl , keycode , keychar , ev->modifiers );
|
||||||
if ( keychar >= 0x20 || event.KeyCode() == WXK_RETURN || event.KeyCode() == WXK_DELETE || event.KeyCode() == WXK_BACK)
|
}
|
||||||
|
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);
|
wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId);
|
||||||
event.SetString( GetValue() ) ;
|
event.SetString( GetValue() ) ;
|
||||||
event.SetEventObject( this );
|
event.SetEventObject( this );
|
||||||
GetEventHandler()->ProcessEvent(event);
|
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:
|
case WXK_RETURN:
|
||||||
if (m_windowStyle & wxPROCESS_ENTER)
|
if (m_windowStyle & wxPROCESS_ENTER)
|
||||||
{
|
{
|
||||||
wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId);
|
wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId);
|
||||||
event.SetEventObject( this );
|
event.SetEventObject( this );
|
||||||
|
event.SetString( GetValue() );
|
||||||
if ( GetEventHandler()->ProcessEvent(event) )
|
if ( GetEventHandler()->ProcessEvent(event) )
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -698,8 +701,12 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
|
|||||||
return ;
|
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;
|
break;
|
||||||
|
|
||||||
@@ -710,32 +717,36 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
|
|||||||
// do its default job.
|
// do its default job.
|
||||||
{
|
{
|
||||||
wxNavigationKeyEvent eventNav;
|
wxNavigationKeyEvent eventNav;
|
||||||
eventNav.SetDirection(!event.ShiftDown());
|
eventNav.SetDirection(!key_event.ShiftDown());
|
||||||
eventNav.SetWindowChange(event.ControlDown());
|
eventNav.SetWindowChange(key_event.ControlDown());
|
||||||
eventNav.SetEventObject(this);
|
eventNav.SetEventObject(this);
|
||||||
|
|
||||||
if ( GetParent()->GetEventHandler()->ProcessEvent(eventNav) )
|
if ( GetParent()->GetEventHandler()->ProcessEvent(eventNav) )
|
||||||
return;
|
return;
|
||||||
event.Skip() ;
|
|
||||||
|
key_event.Skip() ;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
EventRecord *ev = wxTheApp->MacGetCurrentEvent();
|
EventRecord *ev = wxTheApp->MacGetCurrentEvent();
|
||||||
short keycode ;
|
short keychar = short(ev->message & charCodeMask);
|
||||||
short keychar ;
|
if (!eat_key)
|
||||||
keychar = short(ev->message & charCodeMask);
|
{
|
||||||
keycode = short(ev->message & keyCodeMask) >> 8 ;
|
short keycode = short(ev->message & keyCodeMask) >> 8 ;
|
||||||
::HandleControlKey( m_macControl , keycode , keychar , ev->modifiers );
|
::HandleControlKey( m_macControl , keycode , keychar , ev->modifiers );
|
||||||
if ( keychar >= 0x20 || event.KeyCode() == WXK_RETURN || event.KeyCode() == WXK_DELETE || event.KeyCode() == WXK_BACK)
|
}
|
||||||
|
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);
|
wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId);
|
||||||
event.SetString( GetValue() ) ;
|
event.SetString( GetValue() ) ;
|
||||||
event.SetEventObject( this );
|
event.SetEventObject( this );
|
||||||
GetEventHandler()->ProcessEvent(event);
|
GetEventHandler()->ProcessEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user