Index: ash/root_window_controller.cc |
diff --git a/ash/root_window_controller.cc b/ash/root_window_controller.cc |
index 3b36a710965dc96bd43d78c610f0cb55e440cc7e..b52305c8c9aa94c41215912a4322461b785facd5 100644 |
--- a/ash/root_window_controller.cc |
+++ b/ash/root_window_controller.cc |
@@ -331,7 +331,6 @@ void RootWindowController::Init(bool first_run_after_boot) { |
CreateSystemBackground(first_run_after_boot); |
InitLayoutManagers(); |
- InitKeyboard(); |
InitTouchHuds(); |
if (Shell::GetPrimaryRootWindowController()-> |
@@ -519,26 +518,33 @@ const aura::Window* RootWindowController::GetTopmostFullscreenWindow() const { |
return NULL; |
} |
-void RootWindowController::InitKeyboard() { |
+void RootWindowController::EnableKeyboard( |
+ keyboard::KeyboardController* keyboard_controller) { |
if (keyboard::IsKeyboardEnabled()) { |
+ keyboard_controller->AddObserver(shelf()->shelf_layout_manager()); |
+ keyboard_controller->AddObserver(panel_layout_manager_); |
aura::Window* parent = root_window(); |
- |
- keyboard::KeyboardControllerProxy* proxy = |
- Shell::GetInstance()->delegate()->CreateKeyboardControllerProxy(); |
- keyboard_controller_.reset( |
- new keyboard::KeyboardController(proxy)); |
- |
- keyboard_controller_->AddObserver(shelf()->shelf_layout_manager()); |
- keyboard_controller_->AddObserver(panel_layout_manager_); |
- |
aura::Window* keyboard_container = |
- keyboard_controller_->GetContainerWindow(); |
+ keyboard_controller->GetContainerWindow(); |
keyboard_container->set_id(kShellWindowId_VirtualKeyboardContainer); |
parent->AddChild(keyboard_container); |
keyboard_container->SetBounds(parent->bounds()); |
} |
} |
bshe
2013/10/03 01:05:43
Note: |DisableKeyboard| is not used anywhere yet.
|
+void RootWindowController::DisableKeyboard( |
+ keyboard::KeyboardController* keyboard_controller) { |
+ if (keyboard::IsKeyboardEnabled()) { |
+ aura::Window* keyboard_container = |
+ keyboard_controller->GetContainerWindow(); |
+ if (root_window()->Contains(keyboard_container)) { |
+ root_window()->RemoveChild(keyboard_controller->GetContainerWindow()); |
+ keyboard_controller->RemoveObserver(shelf()->shelf_layout_manager()); |
+ keyboard_controller->RemoveObserver(panel_layout_manager_); |
+ } |
+ } |
+} |
+ |
//////////////////////////////////////////////////////////////////////////////// |
// RootWindowController, private: |
@@ -812,8 +818,6 @@ void RootWindowController::DisableTouchHudProjection() { |
} |
void RootWindowController::OnLoginStateChanged(user::LoginStatus status) { |
- if (status != user::LOGGED_IN_NONE) |
- InitKeyboard(); |
shelf_->shelf_layout_manager()->UpdateVisibilityState(); |
} |