summaryrefslogtreecommitdiffstats
path: root/views/controls/textfield/native_textfield_win.cc
diff options
context:
space:
mode:
Diffstat (limited to 'views/controls/textfield/native_textfield_win.cc')
-rw-r--r--views/controls/textfield/native_textfield_win.cc42
1 files changed, 9 insertions, 33 deletions
diff --git a/views/controls/textfield/native_textfield_win.cc b/views/controls/textfield/native_textfield_win.cc
index c229eb90..5ceb2a4d 100644
--- a/views/controls/textfield/native_textfield_win.cc
+++ b/views/controls/textfield/native_textfield_win.cc
@@ -488,7 +488,7 @@ void NativeTextfieldWin::UpdateAccessibleValue(const std::wstring& value) {
// 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 @@ void NativeTextfieldWin::OnKeyDown(TCHAR key, UINT repeat_count, UINT flags) {
// 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 @@ void NativeTextfieldWin::OnSysChar(TCHAR ch, UINT repeat_count, UINT flags) {
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 @@ void NativeTextfieldWin::HandleKeystroke(UINT message,
// 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