Guest User

Untitled

a guest
Feb 19th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 3.14 KB | None | 0 0
  1. diff --git a/views/ime/input_method_ibus.cc b/views/ime/input_method_ibus.cc
  2. index 94ee14c..430a926 100644
  3. --- a/views/ime/input_method_ibus.cc
  4. +++ b/views/ime/input_method_ibus.cc
  5. @@ -30,6 +30,10 @@
  6.  #include "ui/base/keycodes/keyboard_code_conversion_x.h"
  7.  #endif
  8.  
  9. +#if defined(USE_AURA)
  10. +#include "ui/aura/event.h"
  11. +#endif
  12. +
  13.  namespace {
  14.  
  15.  // A global flag to switch the InputMethod implementation to InputMethodIBus
  16. @@ -61,6 +65,19 @@ void IBusKeyEventFromViewsKeyEvent(const views::KeyEvent& key,
  17.                                     guint32* ibus_keyval,
  18.                                     guint32* ibus_keycode,
  19.                                     guint32* ibus_state) {
  20. +#if defined(USE_AURA)
  21. +  if (key.native_event()) {
  22. +    XKeyEvent* x_key =
  23. +        reinterpret_cast<XKeyEvent*>(key.native_event()->native_event());
  24. +    // Yes, ibus uses X11 keysym. We cannot use XLookupKeysym(), which doesn't
  25. +    // translate Shift and CapsLock states.
  26. +    KeySym keysym = NoSymbol;
  27. +    ::XLookupString(x_key, NULL, 0, &keysym, NULL);
  28. +    *ibus_keyval = keysym;
  29. +    *ibus_keycode = x_key->keycode;
  30. +  }
  31. +#else  // defined(USE_AURA)
  32. +
  33.  #if defined(TOUCH_UI)
  34.    if (key.native_event()) {
  35.      XKeyEvent* x_key = reinterpret_cast<XKeyEvent*>(key.native_event());
  36. @@ -86,6 +103,7 @@ void IBusKeyEventFromViewsKeyEvent(const views::KeyEvent& key,
  37.          key.key_code(), key.IsShiftDown() ^ key.IsCapsLockDown());
  38.      *ibus_keycode = 0;
  39.    }
  40. +#endif  // defined(USE_AURA)
  41.  
  42.    *ibus_state = IBusStateFromViewsFlags(key.flags());
  43.    if (key.type() == ui::ET_KEY_RELEASED)
  44. @@ -204,7 +222,7 @@ class InputMethodIBus::PendingKeyEvent {
  45.  #if defined(TOUCH_UI)
  46.    // corresponding XEvent data of a views::KeyEvent. It's a plain struct so we
  47.    // can do bitwise copy.
  48. -  XKeyEvent x_event_;
  49. +  NativeEvent native_event_;
  50.  #endif
  51.  
  52.    DISALLOW_COPY_AND_ASSIGN(PendingKeyEvent);
  53. @@ -224,9 +242,9 @@ InputMethodIBus::PendingKeyEvent::PendingKeyEvent(InputMethodIBus* input_method,
  54.  
  55.  #if defined(TOUCH_UI)
  56.    if (key.native_event())
  57. -    x_event_ = *reinterpret_cast<XKeyEvent*>(key.native_event());
  58. +    native_event_ = key.native_event();
  59.    else
  60. -    memset(&x_event_, 0, sizeof(x_event_));
  61. +    memset(&native_event_, 0, sizeof(native_event_));
  62.  #endif
  63.  }
  64.  
  65.  
  66. @@ -239,9 +257,10 @@ void InputMethodIBus::PendingKeyEvent::ProcessPostIME(bool handled) {
  67.    if (!input_method_)
  68.      return;
  69.  
  70. -#if defined(TOUCH_UI)
  71. -  if (x_event_.type == KeyPress || x_event_.type == KeyRelease) {
  72. -    KeyEvent key(reinterpret_cast<XEvent*>(&x_event_));
  73. +#if defined(USE_AURA)
  74. +#elif defined(TOUCH_UI)
  75. +  if (native_event_.type == KeyPress || native_event_.type == KeyRelease) {
  76. +    KeyEvent key(reinterpret_cast<XEvent*>(&native_event_));
  77.      input_method_->ProcessKeyEventPostIME(key, ibus_keyval_, handled);
  78.      return;
  79.    }
  80. diff --git a/views/ime/input_method_ibus.h b/views/ime/input_method_ibus.h
  81. index 2402f6a..a4d9621 100644
  82. --- a/views/ime/input_method_ibus.h
  83. +++ b/views/ime/input_method_ibus.h
  84. @@ -6,6 +6,8 @@
  85.  #define VIEWS_IME_INPUT_METHOD_IBUS_H_
  86.  #pragma once
  87.  
  88. +#include <gio/gio.h>
  89. +
  90.  #include <set>
  91.  #include <string>
Add Comment
Please, Sign In to add comment