Index: ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc |
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc |
index a56deb7fc9f851beedb554a21c8019a0eee2599a..51c324110a74dd875156941a2d3654224c2b857d 100644 |
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc |
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc |
@@ -23,6 +23,7 @@ |
#include "ui/aura/window_property.h" |
#include "ui/base/dragdrop/os_exchange_data_provider_aurax11.h" |
#include "ui/base/hit_test.h" |
+#include "ui/base/ime/input_method.h" |
#include "ui/base/x/x11_util.h" |
#include "ui/events/devices/x11/device_data_manager_x11.h" |
#include "ui/events/devices/x11/device_list_cache_x11.h" |
@@ -1517,6 +1518,11 @@ void DesktopWindowTreeHostX11::DispatchTouchEvent(ui::TouchEvent* event) { |
} |
} |
+void DesktopWindowTreeHostX11::DispatchKeyEvent(ui::KeyEvent* event) { |
+ GetInputMethod()->DispatchKeyEvent(*event); |
+ event->StopPropagation(); |
+} |
+ |
void DesktopWindowTreeHostX11::ConvertEventToDifferentHost( |
ui::LocatedEvent* located_event, |
DesktopWindowTreeHostX11* host) { |
@@ -1745,7 +1751,7 @@ uint32_t DesktopWindowTreeHostX11::DispatchEvent( |
} |
case KeyPress: { |
ui::KeyEvent keydown_event(xev); |
- SendEventToProcessor(&keydown_event); |
+ DispatchKeyEvent(&keydown_event); |
break; |
} |
case KeyRelease: { |
@@ -1756,7 +1762,7 @@ uint32_t DesktopWindowTreeHostX11::DispatchEvent( |
break; |
ui::KeyEvent key_event(xev); |
- SendEventToProcessor(&key_event); |
+ DispatchKeyEvent(&key_event); |
break; |
} |
case ButtonPress: |
@@ -1881,7 +1887,7 @@ uint32_t DesktopWindowTreeHostX11::DispatchEvent( |
case ui::ET_KEY_PRESSED: |
case ui::ET_KEY_RELEASED: { |
ui::KeyEvent key_event(xev); |
- SendEventToProcessor(&key_event); |
+ DispatchKeyEvent(&key_event); |
break; |
} |
case ui::ET_UNKNOWN: |