| Index: ash/display/display_controller.cc
|
| diff --git a/ash/display/display_controller.cc b/ash/display/display_controller.cc
|
| index f34ae1fefc01e1040d4fa06bdef4002bc4a89de0..9e352fe72dfb7e392b5314c8a2670bc658fa5c46 100644
|
| --- a/ash/display/display_controller.cc
|
| +++ b/ash/display/display_controller.cc
|
| @@ -26,6 +26,7 @@
|
| #include "ash/shell_delegate.h"
|
| #include "ash/system/tray/system_tray.h"
|
| #include "ash/wm/coordinate_conversion.h"
|
| +#include "ash/wm/window_util.h"
|
| #include "base/command_line.h"
|
| #include "base/stl_util.h"
|
| #include "base/strings/stringprintf.h"
|
| @@ -38,6 +39,7 @@
|
| #include "ui/aura/window_property.h"
|
| #include "ui/aura/window_tracker.h"
|
| #include "ui/aura/window_tree_host.h"
|
| +#include "ui/base/ime/input_method_factory.h"
|
| #include "ui/compositor/compositor.h"
|
| #include "ui/gfx/display.h"
|
| #include "ui/gfx/screen.h"
|
| @@ -867,6 +869,16 @@ void DisplayController::PostDisplayConfigurationChange() {
|
| UpdateMouseLocationAfterDisplayChange();
|
| }
|
|
|
| +bool DisplayController::DispatchKeyEventPostIME(const ui::KeyEvent& event) {
|
| + // Getting the active root window to dispatch the event. This isn't
|
| + // significant as the event will be sent to the window resolved by
|
| + // aura::client::FocusClient which is FocusController in ash.
|
| + aura::Window* active_window = wm::GetActiveWindow();
|
| + aura::Window* root_window = active_window ? active_window->GetRootWindow()
|
| + : Shell::GetPrimaryRootWindow();
|
| + return root_window->GetHost()->DispatchKeyEventPostIME(event);
|
| +}
|
| +
|
| AshWindowTreeHost* DisplayController::AddWindowTreeHostForDisplay(
|
| const gfx::Display& display,
|
| const AshWindowTreeHostInitParams& init_params) {
|
| @@ -879,6 +891,11 @@ AshWindowTreeHost* DisplayController::AddWindowTreeHostForDisplay(
|
| display.id() == DisplayManager::kUnifiedDisplayId;
|
| AshWindowTreeHost* ash_host = AshWindowTreeHost::Create(params_with_bounds);
|
| aura::WindowTreeHost* host = ash_host->AsWindowTreeHost();
|
| + if (!input_method_) { // Singleton input method instance for Ash.
|
| + input_method_ = ui::CreateInputMethod(this, host->GetAcceleratedWidget());
|
| + input_method_->OnFocus();
|
| + }
|
| + host->SetSharedInputMethod(input_method_.get());
|
|
|
| host->window()->SetName(base::StringPrintf(
|
| "%sRootWindow-%d", params_with_bounds.offscreen ? "Offscreen" : "",
|
|
|