Chromium Code Reviews| Index: ash/shell.cc |
| diff --git a/ash/shell.cc b/ash/shell.cc |
| index 123b81efc16775c38459eb6feb1f11ada4908637..3d4e06c97862bd66e64ae0228968ff579ddbde8e 100644 |
| --- a/ash/shell.cc |
| +++ b/ash/shell.cc |
| @@ -93,6 +93,7 @@ |
| #include "ui/gfx/screen.h" |
| #include "ui/gfx/size.h" |
| #include "ui/keyboard/keyboard.h" |
| +#include "ui/keyboard/keyboard_controller.h" |
| #include "ui/keyboard/keyboard_util.h" |
| #include "ui/message_center/message_center.h" |
| #include "ui/views/corewm/compound_event_filter.h" |
| @@ -558,6 +559,7 @@ void Shell::Init() { |
| new internal::RootWindowController(root_window); |
| InitRootWindowController(root_window_controller, |
| delegate_->IsFirstRunAfterBoot()); |
| + InitKeyboard(root_window_controller); |
| locale_notification_controller_.reset( |
| new internal::LocaleNotificationController); |
| @@ -685,6 +687,11 @@ void Shell::SetDisplayWorkAreaInsets(Window* contains, |
| } |
| void Shell::OnLoginStateChanged(user::LoginStatus status) { |
| + if (status != user::LOGGED_IN_NONE) { |
| + // TODO(bshe): Primary root window controller may not be the controller to |
| + // attach virtual keyboard. See http://crbug.com/303429 |
| + InitKeyboard(GetPrimaryRootWindowController()); |
| + } |
| FOR_EACH_OBSERVER(ShellObserver, observers_, OnLoginStateChanged(status)); |
| } |
| @@ -868,6 +875,26 @@ void Shell::DoInitialWorkspaceAnimation() { |
| DoInitialAnimation(); |
| } |
| +//////////////////////////////////////////////////////////////////////////////// |
| +// Shell, private: |
| + |
| +void Shell::InitKeyboard(internal::RootWindowController* root) { |
| + if (keyboard::IsKeyboardEnabled()) { |
| + if (keyboard_controller_.get()) { |
| + RootWindowControllerList controllers = GetAllRootWindowControllers(); |
| + for (RootWindowControllerList::iterator iter = controllers.begin(); |
| + iter != controllers.end(); ++iter) { |
|
varkha
2013/10/04 01:54:07
nit: align with RootWindowControllerList above.
bshe
2013/10/04 03:04:39
Done.
|
| + (*iter)->DisableKeyboard(keyboard_controller_.get()); |
|
varkha
2013/10/04 01:54:07
Can there be a situation when you are disabling ke
bshe
2013/10/04 03:04:39
We reset the keyboard controller before we enable
|
| + } |
| + } |
| + keyboard::KeyboardControllerProxy* proxy = |
| + delegate_->CreateKeyboardControllerProxy(); |
| + keyboard_controller_.reset( |
| + new keyboard::KeyboardController(proxy)); |
| + root->EnableKeyboard(keyboard_controller_.get()); |
| + } |
| +} |
| + |
| void Shell::InitRootWindowController( |
| internal::RootWindowController* controller, |
| bool first_run_after_boot) { |
| @@ -902,9 +929,6 @@ void Shell::InitRootWindowController( |
| controller->Init(first_run_after_boot); |
| } |
| -//////////////////////////////////////////////////////////////////////////////// |
| -// Shell, private: |
| - |
| bool Shell::CanWindowReceiveEvents(aura::Window* window) { |
| RootWindowControllerList controllers = GetAllRootWindowControllers(); |
| for (RootWindowControllerList::iterator iter = controllers.begin(); |