Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/views/ime/input_method_ibus.cc b/views/ime/input_method_ibus.cc
- index 94ee14c..430a926 100644
- --- a/views/ime/input_method_ibus.cc
- +++ b/views/ime/input_method_ibus.cc
- @@ -30,6 +30,10 @@
- #include "ui/base/keycodes/keyboard_code_conversion_x.h"
- #endif
- +#if defined(USE_AURA)
- +#include "ui/aura/event.h"
- +#endif
- +
- namespace {
- // A global flag to switch the InputMethod implementation to InputMethodIBus
- @@ -61,6 +65,19 @@ void IBusKeyEventFromViewsKeyEvent(const views::KeyEvent& key,
- guint32* ibus_keyval,
- guint32* ibus_keycode,
- guint32* ibus_state) {
- +#if defined(USE_AURA)
- + if (key.native_event()) {
- + XKeyEvent* x_key =
- + reinterpret_cast<XKeyEvent*>(key.native_event()->native_event());
- + // Yes, ibus uses X11 keysym. We cannot use XLookupKeysym(), which doesn't
- + // translate Shift and CapsLock states.
- + KeySym keysym = NoSymbol;
- + ::XLookupString(x_key, NULL, 0, &keysym, NULL);
- + *ibus_keyval = keysym;
- + *ibus_keycode = x_key->keycode;
- + }
- +#else // defined(USE_AURA)
- +
- #if defined(TOUCH_UI)
- if (key.native_event()) {
- XKeyEvent* x_key = reinterpret_cast<XKeyEvent*>(key.native_event());
- @@ -86,6 +103,7 @@ void IBusKeyEventFromViewsKeyEvent(const views::KeyEvent& key,
- key.key_code(), key.IsShiftDown() ^ key.IsCapsLockDown());
- *ibus_keycode = 0;
- }
- +#endif // defined(USE_AURA)
- *ibus_state = IBusStateFromViewsFlags(key.flags());
- if (key.type() == ui::ET_KEY_RELEASED)
- @@ -204,7 +222,7 @@ class InputMethodIBus::PendingKeyEvent {
- #if defined(TOUCH_UI)
- // corresponding XEvent data of a views::KeyEvent. It's a plain struct so we
- // can do bitwise copy.
- - XKeyEvent x_event_;
- + NativeEvent native_event_;
- #endif
- DISALLOW_COPY_AND_ASSIGN(PendingKeyEvent);
- @@ -224,9 +242,9 @@ InputMethodIBus::PendingKeyEvent::PendingKeyEvent(InputMethodIBus* input_method,
- #if defined(TOUCH_UI)
- if (key.native_event())
- - x_event_ = *reinterpret_cast<XKeyEvent*>(key.native_event());
- + native_event_ = key.native_event();
- else
- - memset(&x_event_, 0, sizeof(x_event_));
- + memset(&native_event_, 0, sizeof(native_event_));
- #endif
- }
- @@ -239,9 +257,10 @@ void InputMethodIBus::PendingKeyEvent::ProcessPostIME(bool handled) {
- if (!input_method_)
- return;
- -#if defined(TOUCH_UI)
- - if (x_event_.type == KeyPress || x_event_.type == KeyRelease) {
- - KeyEvent key(reinterpret_cast<XEvent*>(&x_event_));
- +#if defined(USE_AURA)
- +#elif defined(TOUCH_UI)
- + if (native_event_.type == KeyPress || native_event_.type == KeyRelease) {
- + KeyEvent key(reinterpret_cast<XEvent*>(&native_event_));
- input_method_->ProcessKeyEventPostIME(key, ibus_keyval_, handled);
- return;
- }
- diff --git a/views/ime/input_method_ibus.h b/views/ime/input_method_ibus.h
- index 2402f6a..a4d9621 100644
- --- a/views/ime/input_method_ibus.h
- +++ b/views/ime/input_method_ibus.h
- @@ -6,6 +6,8 @@
- #define VIEWS_IME_INPUT_METHOD_IBUS_H_
- #pragma once
- +#include <gio/gio.h>
- +
- #include <set>
- #include <string>
Add Comment
Please, Sign In to add comment