| Index: ui/aura/window_event_dispatcher.cc
|
| diff --git a/ui/aura/window_event_dispatcher.cc b/ui/aura/window_event_dispatcher.cc
|
| index 589529ea6c0889e70fdec7f5694377455cf2d70a..d815f26b364e4dcd4f06d722b7d5674e9b856125 100644
|
| --- a/ui/aura/window_event_dispatcher.cc
|
| +++ b/ui/aura/window_event_dispatcher.cc
|
| @@ -25,6 +25,7 @@
|
| #include "ui/aura/window_tracker.h"
|
| #include "ui/aura/window_tree_host.h"
|
| #include "ui/base/hit_test.h"
|
| +#include "ui/base/ime/input_method.h"
|
| #include "ui/compositor/dip_util.h"
|
| #include "ui/events/event.h"
|
| #include "ui/events/event_utils.h"
|
| @@ -519,6 +520,8 @@ ui::EventDispatchDetails WindowEventDispatcher::PreDispatchEvent(
|
| details = PreDispatchLocatedEvent(target_window, event->AsScrollEvent());
|
| } else if (event->IsTouchEvent()) {
|
| details = PreDispatchTouchEvent(target_window, event->AsTouchEvent());
|
| + } else if (event->IsKeyEvent()) {
|
| + details = PreDispatchKeyEvent(event->AsKeyEvent());
|
| }
|
| if (details.dispatcher_destroyed || details.target_destroyed)
|
| return details;
|
| @@ -929,4 +932,14 @@ DispatchDetails WindowEventDispatcher::PreDispatchTouchEvent(
|
| return PreDispatchLocatedEvent(target, event);
|
| }
|
|
|
| +ui::EventDispatchDetails WindowEventDispatcher::PreDispatchKeyEvent(
|
| + ui::KeyEvent* event) {
|
| + if (!host_->has_input_method() || event->should_skip_ime() ||
|
| + (event->flags() & ui::EF_IS_SYNTHESIZED))
|
| + return ui::EventDispatchDetails();
|
| + host_->GetInputMethod()->DispatchKeyEvent(event);
|
| + event->StopPropagation();
|
| + return ui::EventDispatchDetails();
|
| +}
|
| +
|
| } // namespace aura
|
|
|