diff --git a/docs/changes.txt b/docs/changes.txt index 1356f4cf58..db62d3f192 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -637,6 +637,7 @@ wxOSX: - Fix using wxHTTP and wxFTP from worker thread. - Fix wxFileDialog::GetFilterIndex() for file open dialogs (phsilva). - Fix printing all pages non-interactively (John Roberts). +- Fix handling of WXK_NUMPAD_ENTER in wxTextCtrl (John Roberts). - Fix custom paper support (tijsv). - Return false from wxSound::Create()/IsOk() if the file doesn't exist. diff --git a/src/osx/textctrl_osx.cpp b/src/osx/textctrl_osx.cpp index 08346e5adb..7b42796c4d 100644 --- a/src/osx/textctrl_osx.cpp +++ b/src/osx/textctrl_osx.cpp @@ -366,8 +366,10 @@ void wxTextCtrl::OnChar(wxKeyEvent& event) bool eat_key = false ; long from, to; - if ( !IsEditable() && !event.IsKeyInCategory(WXK_CATEGORY_ARROW | WXK_CATEGORY_TAB) && - !( key == WXK_RETURN && ( (m_windowStyle & wxTE_PROCESS_ENTER) || (m_windowStyle & wxTE_MULTILINE) ) ) + if ( !IsEditable() && + !event.IsKeyInCategory(WXK_CATEGORY_ARROW | WXK_CATEGORY_TAB) && + !( (key == WXK_RETURN || key == WXK_NUMPAD_ENTER) && + ( (m_windowStyle & wxTE_PROCESS_ENTER) || (m_windowStyle & wxTE_MULTILINE) ) ) // && key != WXK_PAGEUP && key != WXK_PAGEDOWN && key != WXK_HOME && key != WXK_END ) { @@ -382,7 +384,8 @@ void wxTextCtrl::OnChar(wxKeyEvent& event) GetSelection( &from, &to ); if ( !IsMultiLine() && m_maxLength && GetValue().length() >= m_maxLength && !event.IsKeyInCategory(WXK_CATEGORY_ARROW | WXK_CATEGORY_TAB | WXK_CATEGORY_CUT) && - !( key == WXK_RETURN && (m_windowStyle & wxTE_PROCESS_ENTER) ) && + !( (key == WXK_RETURN || key == WXK_NUMPAD_ENTER) && + (m_windowStyle & wxTE_PROCESS_ENTER) ) && from == to ) { // eat it, we don't want to add more than allowed # of characters @@ -398,6 +401,7 @@ void wxTextCtrl::OnChar(wxKeyEvent& event) switch ( key ) { case WXK_RETURN: + case WXK_NUMPAD_ENTER: if (m_windowStyle & wxTE_PROCESS_ENTER) { wxCommandEvent event(wxEVT_TEXT_ENTER, m_windowId); @@ -466,6 +470,7 @@ void wxTextCtrl::OnChar(wxKeyEvent& event) ( key >= WXK_NUMPAD0 && key <= WXK_DIVIDE ) || key == WXK_RETURN || key == WXK_DELETE || + key == WXK_NUMPAD_ENTER || key == WXK_BACK) { wxCommandEvent event1(wxEVT_TEXT, m_windowId);