Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(213)

Side by Side Diff: ui/base/ime/input_method_win.cc

Issue 1234193002: Simplify InputMethodWin initialization. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/base/ime/input_method_win.h" 5 #include "ui/base/ime/input_method_win.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/profiler/scoped_tracker.h" 8 #include "base/profiler/scoped_tracker.h"
9 #include "ui/base/ime/text_input_client.h" 9 #include "ui/base/ime/text_input_client.h"
10 #include "ui/base/ime/win/tsf_input_scope.h" 10 #include "ui/base/ime/win/tsf_input_scope.h"
(...skipping 11 matching lines...) Expand all
22 // is returned to IME for improving conversion accuracy. 22 // is returned to IME for improving conversion accuracy.
23 static const size_t kExtraNumberOfChars = 20; 23 static const size_t kExtraNumberOfChars = 20;
24 24
25 } // namespace 25 } // namespace
26 26
27 InputMethodWin::InputMethodWin(internal::InputMethodDelegate* delegate, 27 InputMethodWin::InputMethodWin(internal::InputMethodDelegate* delegate,
28 HWND toplevel_window_handle) 28 HWND toplevel_window_handle)
29 : toplevel_window_handle_(toplevel_window_handle), 29 : toplevel_window_handle_(toplevel_window_handle),
30 pending_requested_direction_(base::i18n::UNKNOWN_DIRECTION), 30 pending_requested_direction_(base::i18n::UNKNOWN_DIRECTION),
31 accept_carriage_return_(false), 31 accept_carriage_return_(false),
32 active_(false),
33 enabled_(false), 32 enabled_(false),
34 is_candidate_popup_open_(false), 33 is_candidate_popup_open_(false),
35 composing_window_handle_(NULL), 34 composing_window_handle_(NULL),
36 default_input_language_initialized_(false),
37 suppress_next_char_(false) { 35 suppress_next_char_(false) {
38 SetDelegate(delegate); 36 SetDelegate(delegate);
37 OnInputLocaleChanged();
39 } 38 }
40 39
41 void InputMethodWin::OnFocus() { 40 void InputMethodWin::OnFocus() {
42 InputMethodBase::OnFocus(); 41 InputMethodBase::OnFocus();
43 if (GetTextInputClient()) 42 if (GetTextInputClient())
44 UpdateIMEState(); 43 UpdateIMEState();
45 } 44 }
46 45
47 void InputMethodWin::OnBlur() { 46 void InputMethodWin::OnBlur() {
48 ConfirmCompositionText(); 47 ConfirmCompositionText();
49 // Gets the focused text input client before calling parent's OnBlur() because 48 // Gets the focused text input client before calling parent's OnBlur() because
50 // it will cause GetTextInputClient() returns NULL. 49 // it will cause GetTextInputClient() returns NULL.
51 ui::TextInputClient* client = GetTextInputClient(); 50 ui::TextInputClient* client = GetTextInputClient();
52 InputMethodBase::OnBlur(); 51 InputMethodBase::OnBlur();
53 if (client) 52 if (client)
54 UpdateIMEState(); 53 UpdateIMEState();
55 } 54 }
56 55
57 bool InputMethodWin::OnUntranslatedIMEMessage( 56 bool InputMethodWin::OnUntranslatedIMEMessage(
58 const base::NativeEvent& event, 57 const base::NativeEvent& event,
59 InputMethod::NativeEventResult* result) { 58 InputMethod::NativeEventResult* result) {
60 LRESULT original_result = 0; 59 LRESULT original_result = 0;
61 BOOL handled = FALSE; 60 BOOL handled = FALSE;
62 61
63 if (!default_input_language_initialized_) {
64 // Gets the initial input locale.
65 OnInputLocaleChanged();
66 }
67
68 switch (event.message) { 62 switch (event.message) {
69 case WM_IME_SETCONTEXT: 63 case WM_IME_SETCONTEXT:
70 original_result = OnImeSetContext( 64 original_result = OnImeSetContext(
71 event.hwnd, event.message, event.wParam, event.lParam, &handled); 65 event.hwnd, event.message, event.wParam, event.lParam, &handled);
72 break; 66 break;
73 case WM_IME_STARTCOMPOSITION: 67 case WM_IME_STARTCOMPOSITION:
74 original_result = OnImeStartComposition( 68 original_result = OnImeStartComposition(
75 event.hwnd, event.message, event.wParam, event.lParam, &handled); 69 event.hwnd, event.message, event.wParam, event.lParam, &handled);
76 break; 70 break;
77 case WM_IME_COMPOSITION: 71 case WM_IME_COMPOSITION:
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 screen_bounds.size()); 166 screen_bounds.size());
173 imm32_manager_.UpdateCaretRect(attached_window, caret_rect); 167 imm32_manager_.UpdateCaretRect(attached_window, caret_rect);
174 } 168 }
175 169
176 void InputMethodWin::CancelComposition(const TextInputClient* client) { 170 void InputMethodWin::CancelComposition(const TextInputClient* client) {
177 if (enabled_ && IsTextInputClientFocused(client)) 171 if (enabled_ && IsTextInputClientFocused(client))
178 imm32_manager_.CancelIME(toplevel_window_handle_); 172 imm32_manager_.CancelIME(toplevel_window_handle_);
179 } 173 }
180 174
181 void InputMethodWin::OnInputLocaleChanged() { 175 void InputMethodWin::OnInputLocaleChanged() {
182 default_input_language_initialized_ = true;
183 active_ = imm32_manager_.SetInputLanguage();
184 locale_ = imm32_manager_.GetInputLanguageName(); 176 locale_ = imm32_manager_.GetInputLanguageName();
185 OnInputMethodChanged(); 177 OnInputMethodChanged();
186 } 178 }
187 179
188 std::string InputMethodWin::GetInputLocale() { 180 std::string InputMethodWin::GetInputLocale() {
189 return locale_; 181 return locale_;
190 } 182 }
191 183
192 bool InputMethodWin::IsActive() {
193 return active_;
194 }
195
196 bool InputMethodWin::IsCandidatePopupOpen() const { 184 bool InputMethodWin::IsCandidatePopupOpen() const {
197 return is_candidate_popup_open_; 185 return is_candidate_popup_open_;
198 } 186 }
199 187
200 void InputMethodWin::OnWillChangeFocusedClient(TextInputClient* focused_before, 188 void InputMethodWin::OnWillChangeFocusedClient(TextInputClient* focused_before,
201 TextInputClient* focused) { 189 TextInputClient* focused) {
202 if (IsWindowFocused(focused_before)) 190 if (IsWindowFocused(focused_before))
203 ConfirmCompositionText(); 191 ConfirmCompositionText();
204 } 192 }
205 193
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after
628 enabled_ = true; 616 enabled_ = true;
629 break; 617 break;
630 } 618 }
631 619
632 imm32_manager_.SetTextInputMode(window_handle, text_input_mode); 620 imm32_manager_.SetTextInputMode(window_handle, text_input_mode);
633 tsf_inputscope::SetInputScopeForTsfUnawareWindow( 621 tsf_inputscope::SetInputScopeForTsfUnawareWindow(
634 window_handle, text_input_type, text_input_mode); 622 window_handle, text_input_type, text_input_mode);
635 } 623 }
636 624
637 } // namespace ui 625 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698