diff options
author | yusukes@google.com <yusukes@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-10 06:52:57 +0000 |
---|---|---|
committer | yusukes@google.com <yusukes@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-10 06:52:57 +0000 |
commit | 6b7f5d8c0b6103f62e9744d5f06e78d61d7f262f (patch) | |
tree | 82eb89d2487ccfdf1abef4e26fa73aa6fabd8b91 /views | |
parent | e4853d549ea66da96fb66aba834abcc665f27bed (diff) | |
download | chromium_src-6b7f5d8c0b6103f62e9744d5f06e78d61d7f262f.zip chromium_src-6b7f5d8c0b6103f62e9744d5f06e78d61d7f262f.tar.gz chromium_src-6b7f5d8c0b6103f62e9744d5f06e78d61d7f262f.tar.bz2 |
Add Aura support to InputMethodIBus.
- Fix IBusKeyEventFromViewsKeyEvent() so the function could work fine when USE_AURA is defined.
- Rename GdkKeyCodeForWindowsKeyCode() to XKeysymForWindowsKeyCode() since the function actually does not depend on Gtk/Gdk. XKeysymForWindowsKeyCode() is called in IBusKeyEventFromViewsKeyEvent() when USE_AURA is defined.
- This CL is based on Peng's work at http://codereview.chromium.org/8423037.
With this CL, we can use IME on Omnibox since NativeWidgetAura already has some preliminary IME support (http://codereview.chromium.org/8183011/) while RWHVA doesn't.
BUG=chromium:97261
TEST=Build Chrome inside Chrome OS chroot with USE=aura, boot the OS, enable a CJK IME, and type something on Omnibox. Verify an IME preedit string appears.
Review URL: http://codereview.chromium.org/8502010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@109385 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views')
-rw-r--r-- | views/ime/input_method_ibus.cc | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/views/ime/input_method_ibus.cc b/views/ime/input_method_ibus.cc index 505f14b..1eff716 100644 --- a/views/ime/input_method_ibus.cc +++ b/views/ime/input_method_ibus.cc @@ -22,12 +22,13 @@ #include "base/third_party/icu/icu_utf.h" #include "base/utf_string_conversions.h" #include "ui/base/keycodes/keyboard_codes.h" -#include "ui/base/keycodes/keyboard_code_conversion_gtk.h" #include "views/events/event.h" #include "views/widget/widget.h" -#if defined(TOUCH_UI) +#if defined(USE_AURA) || defined(TOUCH_UI) #include "ui/base/keycodes/keyboard_code_conversion_x.h" +#elif defined(TOOLKIT_USES_GTK) +#include "ui/base/keycodes/keyboard_code_conversion_gtk.h" #endif namespace { @@ -61,7 +62,12 @@ void IBusKeyEventFromViewsKeyEvent(const views::KeyEvent& key, guint32* ibus_keyval, guint32* ibus_keycode, guint32* ibus_state) { -#if defined(TOUCH_UI) +#if defined(USE_AURA) + // TODO(yusukes): Handle native_event()? + *ibus_keyval = ui::XKeysymForWindowsKeyCode( + key.key_code(), key.IsShiftDown() ^ key.IsCapsLockDown()); + *ibus_keycode = 0; +#elif defined(TOUCH_UI) if (key.native_event()) { XKeyEvent* x_key = reinterpret_cast<XKeyEvent*>(key.native_event()); // Yes, ibus uses X11 keysym. We cannot use XLookupKeysym(), which doesn't @@ -70,19 +76,17 @@ void IBusKeyEventFromViewsKeyEvent(const views::KeyEvent& key, ::XLookupString(x_key, NULL, 0, &keysym, NULL); *ibus_keyval = keysym; *ibus_keycode = x_key->keycode; + } else { + *ibus_keyval = ui::XKeysymForWindowsKeyCode( + key.key_code(), key.IsShiftDown() ^ key.IsCapsLockDown()); + *ibus_keycode = 0; } #elif defined(TOOLKIT_USES_GTK) if (key.gdk_event()) { GdkEventKey* gdk_key = reinterpret_cast<GdkEventKey*>(key.gdk_event()); *ibus_keyval = gdk_key->keyval; *ibus_keycode = gdk_key->hardware_keycode; - } -#endif -#if defined(TOUCH_UI) || defined(TOOLKIT_USES_GTK) - else { - // GdkKeyCodeForWindowsKeyCode() is actually nothing to do with Gtk, we - // probably want to rename it to something like XKeySymForWindowsKeyCode(), - // because Gtk keyval is actually same as X KeySym. + } else { *ibus_keyval = ui::GdkKeyCodeForWindowsKeyCode( key.key_code(), key.IsShiftDown() ^ key.IsCapsLockDown()); *ibus_keycode = 0; @@ -853,7 +857,7 @@ void InputMethodIBus::OnForwardKeyEvent(IBusInputContext* context, DCHECK_EQ(context_, context); ui::KeyboardCode key_code = ui::VKEY_UNKNOWN; -#if defined(TOUCH_UI) +#if defined(USE_AURA) || defined(TOUCH_UI) key_code = ui::KeyboardCodeFromXKeysym(keyval); #elif defined(TOOLKIT_USES_GTK) key_code = ui::WindowsKeyCodeForGdkKeyCode(keyval); |