Chromium Code Reviews| Index: ash/root_window_controller.cc |
| diff --git a/ash/root_window_controller.cc b/ash/root_window_controller.cc |
| index 87b54b4cbf33f33bf10761afdffb2924e751f28a..14bc7c34c54a088eff1c36714bcfea2004129c82 100644 |
| --- a/ash/root_window_controller.cc |
| +++ b/ash/root_window_controller.cc |
| @@ -673,12 +673,14 @@ 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()); |
| + wm_shelf_->shelf_layout_manager()->StartObservingKeyboard( |
|
sky
2017/03/10 23:40:47
The sources an object needs to observe are general
xiyuan
2017/03/10 23:44:11
Yep, think it makes more sense than exiting code.
|
| + keyboard_controller); |
| + panel_layout_manager()->StartObservingKeyboard(keyboard_controller); |
| + docked_window_layout_manager()->StartObservingKeyboard(keyboard_controller); |
| + workspace_controller()->layout_manager()->StartObservingKeyboard( |
| + keyboard_controller); |
| + always_on_top_controller_->GetLayoutManager()->StartObservingKeyboard( |
| + keyboard_controller); |
| Shell::GetInstance()->NotifyVirtualKeyboardActivated(true); |
| aura::Window* parent = GetContainer(kShellWindowId_ImeWindowParentContainer); |
| DCHECK(parent); |
| @@ -703,13 +705,17 @@ void RootWindowController::DeactivateKeyboard( |
| 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()); |
| + wm_shelf_->shelf_layout_manager()->StopObservingKeyboard( |
| + keyboard_controller); |
| + panel_layout_manager()->StopObservingKeyboard(keyboard_controller); |
| + docked_window_layout_manager()->StopObservingKeyboard(keyboard_controller); |
| + // |workspace_controller_| could be released in MoveWindowsTo. |
| + if (workspace_controller()) { |
| + workspace_controller()->layout_manager()->StopObservingKeyboard( |
| + keyboard_controller); |
| + } |
| + always_on_top_controller_->GetLayoutManager()->StopObservingKeyboard( |
| + keyboard_controller); |
| Shell::GetInstance()->NotifyVirtualKeyboardActivated(false); |
| } |
| } |