| Index: ash/root_window_controller.cc
|
| diff --git a/ash/root_window_controller.cc b/ash/root_window_controller.cc
|
| index 87b54b4cbf33f33bf10761afdffb2924e751f28a..2161d64af71c99bec53890ef5b443e81891c6baa 100644
|
| --- a/ash/root_window_controller.cc
|
| +++ b/ash/root_window_controller.cc
|
| @@ -673,18 +673,15 @@ void RootWindowController::ActivateKeyboard(
|
| return;
|
| }
|
| DCHECK(keyboard_controller);
|
| - keyboard_controller->AddObserver(wm_shelf_->shelf_layout_manager());
|
| - keyboard_controller->AddObserver(panel_layout_manager());
|
| - keyboard_controller->AddObserver(docked_window_layout_manager());
|
| - keyboard_controller->AddObserver(workspace_controller()->layout_manager());
|
| - keyboard_controller->AddObserver(
|
| - always_on_top_controller_->GetLayoutManager());
|
| - Shell::GetInstance()->NotifyVirtualKeyboardActivated(true);
|
| aura::Window* parent = GetContainer(kShellWindowId_ImeWindowParentContainer);
|
| DCHECK(parent);
|
| aura::Window* keyboard_container = keyboard_controller->GetContainerWindow();
|
| keyboard_container->set_id(kShellWindowId_VirtualKeyboardContainer);
|
| parent->AddChild(keyboard_container);
|
| + // Notify observers after adding keyboard container because various layout
|
| + // managers are using the root window of the container window to decide
|
| + // whether the keyboard is relevant to them.
|
| + Shell::GetInstance()->NotifyVirtualKeyboardActivated(true);
|
| }
|
|
|
| void RootWindowController::DeactivateKeyboard(
|
| @@ -702,15 +699,11 @@ void RootWindowController::DeactivateKeyboard(
|
| // keyboard before removing it from view hierarchy.
|
| keyboard_controller->HideKeyboard(
|
| keyboard::KeyboardController::HIDE_REASON_AUTOMATIC);
|
| - parent->RemoveChild(keyboard_container);
|
| - keyboard_controller->RemoveObserver(wm_shelf_->shelf_layout_manager());
|
| - keyboard_controller->RemoveObserver(panel_layout_manager());
|
| - keyboard_controller->RemoveObserver(docked_window_layout_manager());
|
| - keyboard_controller->RemoveObserver(
|
| - workspace_controller()->layout_manager());
|
| - keyboard_controller->RemoveObserver(
|
| - always_on_top_controller_->GetLayoutManager());
|
| + // Notify observers before removing keyboard container because various
|
| + // layout managers are using the root window of the container window to
|
| + // decide whether the keyboard is relevant to them.
|
| Shell::GetInstance()->NotifyVirtualKeyboardActivated(false);
|
| + parent->RemoveChild(keyboard_container);
|
| }
|
| }
|
|
|
|
|