Index: views/controls/textfield/native_textfield_win.cc |
=================================================================== |
--- views/controls/textfield/native_textfield_win.cc (revision 74437) |
+++ views/controls/textfield/native_textfield_win.cc (working copy) |
@@ -488,7 +488,7 @@ |
// NativeTextfieldWin, private: |
void NativeTextfieldWin::OnChar(TCHAR ch, UINT repeat_count, UINT flags) { |
- HandleKeystroke(GetCurrentMessage()->message, ch, repeat_count, flags); |
+ HandleKeystroke(); |
} |
void NativeTextfieldWin::OnContextMenu(HWND window, const POINT& point) { |
@@ -687,7 +687,7 @@ |
// CRichEditCtrl changes its text on WM_KEYDOWN instead of WM_CHAR for many |
// different keys (backspace, ctrl-v, ...), so we call this in both cases. |
- HandleKeystroke(GetCurrentMessage()->message, key, repeat_count, flags); |
+ HandleKeystroke(); |
} |
void NativeTextfieldWin::OnLButtonDblClk(UINT keys, const CPoint& point) { |
@@ -931,45 +931,21 @@ |
SetMsgHandled(false); |
} |
-void NativeTextfieldWin::HandleKeystroke(UINT message, |
- TCHAR key, |
- UINT repeat_count, |
- UINT flags) { |
+void NativeTextfieldWin::HandleKeystroke() { |
+ const MSG* msg = GetCurrentMessage(); |
ScopedFreeze freeze(this, GetTextObjectModel()); |
Textfield::Controller* controller = textfield_->GetController(); |
bool handled = false; |
if (controller) { |
- ui::EventType type; |
- switch (message) { |
- case WM_KEYDOWN: |
- case WM_SYSKEYDOWN: |
- case WM_CHAR: |
- case WM_SYSCHAR: |
- type = ui::ET_KEY_PRESSED; |
- break; |
- case WM_KEYUP: |
- case WM_SYSKEYUP: |
- type = ui::ET_KEY_RELEASED; |
- break; |
- default: |
- NOTREACHED() << "Unknown message:" << message; |
- // Passing through to avoid crash on release build. |
- type = ui::ET_KEY_PRESSED; |
- } |
- KeyEvent key_event(type, |
- ui::KeyboardCodeForWindowsKeyCode(key), |
- KeyEvent::GetKeyStateFlags(), |
- repeat_count, |
- flags, |
- message); |
- handled = controller->HandleKeyEvent(textfield_, key_event); |
+ KeyEvent event(*msg); |
+ handled = controller->HandleKeyEvent(textfield_, event); |
} |
if (!handled) { |
OnBeforePossibleChange(); |
- if (key == ui::VKEY_HOME || key == ui::VKEY_END) { |
+ if (msg->wParam == ui::VKEY_HOME || msg->wParam == ui::VKEY_END) { |
// DefWindowProc() might reset the keyboard layout when it receives a |
// keydown event for VKEY_HOME or VKEY_END. When the window was created |
// with WS_EX_LAYOUTRTL and the current keyboard layout is not a RTL one, |
@@ -984,10 +960,10 @@ |
// change behavior is surprising and inconsistent with keyboard behavior |
// elsewhere, so reset the layout in this case. |
HKL layout = GetKeyboardLayout(0); |
- DefWindowProc(message, key, MAKELPARAM(repeat_count, flags)); |
+ DefWindowProc(msg->message, msg->wParam, msg->lParam); |
ActivateKeyboardLayout(layout, KLF_REORDER); |
} else { |
- DefWindowProc(message, key, MAKELPARAM(repeat_count, flags)); |
+ DefWindowProc(msg->message, msg->wParam, msg->lParam); |
} |
// CRichEditCtrl automatically turns on IMF_AUTOKEYBOARD when the user |