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

Unified Diff: ui/base/ime/input_method_win.cc

Issue 13235003: Support the Text services framework based IME for Chrome AURA on Windows. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/base/ime/input_method_win.h ('k') | ui/base/ime/win/mock_tsf_bridge.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/ime/input_method_win.cc
===================================================================
--- ui/base/ime/input_method_win.cc (revision 193425)
+++ ui/base/ime/input_method_win.cc (working copy)
@@ -8,12 +8,14 @@
#include "base/debug/stack_trace.h"
#include "base/logging.h"
#include "base/string_util.h"
+#include "base/win/metro.h"
#include "ui/base/events/event.h"
#include "ui/base/events/event_constants.h"
#include "ui/base/events/event_utils.h"
#include "ui/base/ime/composition_text.h"
#include "ui/base/ime/input_method.h"
#include "ui/base/ime/text_input_client.h"
+#include "ui/base/ime/win/tsf_bridge.h"
#include "ui/base/keycodes/keyboard_codes.h"
#include "ui/base/win/hwnd_util.h"
@@ -106,6 +108,12 @@
}
void InputMethodWin::OnTextInputTypeChanged(const TextInputClient* client) {
+ if (base::win::IsTSFAwareRequired()) {
+ UpdateIMEState();
+ ui::TSFBridge::GetInstance()->OnTextInputTypeChanged(
+ const_cast<TextInputClient*>(client));
+ return;
cpu_(ooo_6.6-7.5) 2013/04/11 19:54:12 this seems very important to do. If the full CL is
+ }
if (IsTextInputClientFocused(client)) {
ime_input_.CancelIME(hwnd_);
UpdateIMEState();
@@ -116,7 +124,6 @@
void InputMethodWin::OnCaretBoundsChanged(const TextInputClient* client) {
if (!enabled_ || !IsTextInputClientFocused(client))
return;
-
// The current text input type should not be NONE if |client| is focused.
DCHECK(!IsTextInputTypeNone());
gfx::Rect screen_bounds(GetTextInputClient()->GetCaretBounds());
@@ -149,10 +156,38 @@
return active_;
}
+void InputMethodWin::SetFocusedTextInputClient(TextInputClient* client) {
+ if (base::win::IsTSFAwareRequired()) {
+ if (client) {
+ ui::TSFBridge::GetInstance()->SetFocusedClient(hwnd_, client);
+ } else {
+ ui::TSFBridge::GetInstance()->RemoveFocusedClient(
+ ui::TSFBridge::GetInstance()->GetFocusedTextInputClient());
+ return;
+ }
+ }
+ InputMethodBase::SetFocusedTextInputClient(client);
+}
+
+TextInputClient* InputMethodWin::GetTextInputClient() const {
+ if (base::win::IsTSFAwareRequired())
+ return ui::TSFBridge::GetInstance()->GetFocusedTextInputClient();
+ return InputMethodBase::GetTextInputClient();
+}
+
LRESULT InputMethodWin::OnImeMessages(UINT message,
WPARAM w_param,
LPARAM l_param,
BOOL* handled) {
+ // Don't do traditional IME in Text services mode.
+ if (base::win::IsTSFAwareRequired() &&
+ message != WM_CHAR &&
+ message != WM_SYSCHAR &&
+ message != WM_DEADCHAR &&
+ message != WM_SYSDEADCHAR &&
+ message != WM_IME_SETCONTEXT) {
+ return false;
+ }
LRESULT result = 0;
switch (message) {
case WM_IME_SETCONTEXT:
« no previous file with comments | « ui/base/ime/input_method_win.h ('k') | ui/base/ime/win/mock_tsf_bridge.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698