Index: ash/shell.cc |
diff --git a/ash/shell.cc b/ash/shell.cc |
index 92616f6d1a2ee8cfdd554ffccaeaa5557eaab005..1d0284243fded2b80b215e974d6f699960c118f6 100644 |
--- a/ash/shell.cc |
+++ b/ash/shell.cc |
@@ -41,6 +41,7 @@ |
#include "ash/frame/custom_frame_view_ash.h" |
#include "ash/gpu_support.h" |
#include "ash/high_contrast/high_contrast_controller.h" |
+#include "ash/ime/input_method_event_handler.h" |
#include "ash/keyboard/keyboard_ui.h" |
#include "ash/laser/laser_pointer_controller.h" |
#include "ash/login/lock_screen_controller.h" |
@@ -621,6 +622,10 @@ Shell::~Shell() { |
// Please keep in same order as in Init() because it's easy to miss one. |
if (window_modality_controller_) |
window_modality_controller_.reset(); |
+ if (config != Config::MASH) { |
+ RemovePreTargetHandler( |
+ window_tree_host_manager_->input_method_event_handler()); |
+ } |
RemovePreTargetHandler(magnifier_key_scroll_handler_.get()); |
magnifier_key_scroll_handler_.reset(); |
@@ -951,6 +956,13 @@ void Shell::Init(const ShellInitParams& init_params) { |
accelerator_controller_ = shell_port_->CreateAcceleratorController(); |
maximize_mode_controller_ = base::MakeUnique<MaximizeModeController>(); |
+ if (!ShouldUseIMEService()) { |
+ // Not applicable when using IME service as events are already routed to |
+ // InputMethod first. |
+ AddPreTargetHandler( |
+ window_tree_host_manager_->input_method_event_handler()); |
+ } |
+ |
magnifier_key_scroll_handler_ = MagnifierKeyScroller::CreateHandler(); |
AddPreTargetHandler(magnifier_key_scroll_handler_.get()); |
speech_feedback_handler_ = SpokenFeedbackToggler::CreateHandler(); |