X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9d11268884fd82cfe72673566e403a40105ce703..a87f2821adee59d00f99cad1f9bcf61b0accbcb6:/src/msw/textctrl.cpp diff --git a/src/msw/textctrl.cpp b/src/msw/textctrl.cpp index 1b08d80b6d..5c1fcdeacc 100644 --- a/src/msw/textctrl.cpp +++ b/src/msw/textctrl.cpp @@ -287,16 +287,17 @@ LRESULT APIENTRY _EXPORT wxTextCtrlWndProc(HWND hWnd, WPARAM wParam, LPARAM lParam) { - wxWindow *win = wxFindWinFromHandle((WXHWND)hWnd); - switch ( message ) { case WM_CUT: case WM_COPY: case WM_PASTE: - if( win->HandleClipboardEvent( message ) ) - return 0; - break; + { + wxWindow *win = wxFindWinFromHandle((WXHWND)hWnd); + if( win->HandleClipboardEvent( message ) ) + return 0; + break; + } } return ::CallWindowProc(CASTWNDPROC gs_wndprocEdit, hWnd, message, wParam, lParam); } @@ -1230,7 +1231,8 @@ void wxTextCtrl::SetInsertionPointEnd() // if it doesn't actually move the caret anywhere and so the simple fact of // doing it results in horrible flicker when appending big amounts of text // to the control in a few chunks (see DoAddText() test in the text sample) - if ( GetInsertionPoint() == GetLastPosition() ) + const wxTextPos lastPosition = GetLastPosition(); + if ( GetInsertionPoint() == lastPosition ) { return; } @@ -1246,7 +1248,7 @@ void wxTextCtrl::SetInsertionPointEnd() else // !RichEdit 1.0 #endif // wxUSE_RICHEDIT { - pos = GetLastPosition(); + pos = lastPosition; } SetInsertionPoint(pos); @@ -1781,18 +1783,17 @@ void wxTextCtrl::OnDropFiles(wxDropFilesEvent& event) // kbd input processing // ---------------------------------------------------------------------------- -bool wxTextCtrl::MSWShouldPreProcessMessage(WXMSG* pMsg) +bool wxTextCtrl::MSWShouldPreProcessMessage(WXMSG* msg) { - MSG *msg = (MSG *)pMsg; - // check for our special keys here: if we don't do it and the parent frame // uses them as accelerators, they wouldn't work at all, so we disable // usual preprocessing for them if ( msg->message == WM_KEYDOWN ) { - WORD vkey = (WORD) msg->wParam; - if ( (HIWORD(msg->lParam) & KF_ALTDOWN) == KF_ALTDOWN ) + const WPARAM vkey = msg->wParam; + if ( HIWORD(msg->lParam) & KF_ALTDOWN ) { + // Alt-Backspace is accelerator for "Undo" if ( vkey == VK_BACK ) return false; } @@ -1810,6 +1811,9 @@ bool wxTextCtrl::MSWShouldPreProcessMessage(WXMSG* pMsg) // fall through case 0: + if ( IsMultiLine() && vkey == VK_RETURN ) + return false; + // fall through case 2: break; @@ -1838,7 +1842,7 @@ bool wxTextCtrl::MSWShouldPreProcessMessage(WXMSG* pMsg) } } - return wxControl::MSWShouldPreProcessMessage(pMsg); + return wxControl::MSWShouldPreProcessMessage(msg); } void wxTextCtrl::OnChar(wxKeyEvent& event)