Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2231)

Unified Diff: ash/root_window_controller.cc

Issue 25111002: Only show virtual keyboard on primary root window (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: reviews Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ash/root_window_controller.cc
diff --git a/ash/root_window_controller.cc b/ash/root_window_controller.cc
index 3b36a710965dc96bd43d78c610f0cb55e440cc7e..14f4608d54fb509104c3f4db0c4bd8a774b0f1c7 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()->
@@ -407,6 +406,10 @@ void RootWindowController::OnWallpaperAnimationFinished(views::Widget* widget) {
void RootWindowController::CloseChildWindows() {
mouse_event_target_.reset();
+ // Disable keyboard container before close child windows and shutdown
varkha 2013/10/04 01:54:07 nit: s/close/closing, s/shutdown/shutting down.
bshe 2013/10/04 03:04:39 Done.
+ // associated layout managers.
+ DisableKeyboard(Shell::GetInstance()->keyboard_controller());
+
if (!shelf_.get())
return;
// panel_layout_manager_ needs to be shut down before windows are destroyed.
@@ -519,26 +522,36 @@ const aura::Window* RootWindowController::GetTopmostFullscreenWindow() const {
return NULL;
}
-void RootWindowController::InitKeyboard() {
- if (keyboard::IsKeyboardEnabled()) {
+void RootWindowController::EnableKeyboard(
varkha 2013/10/04 01:54:07 If I understand it right, "enabled" in keyboard::I
bshe 2013/10/04 03:04:39 Done.
+ keyboard::KeyboardController* keyboard_controller) {
+ if (keyboard::IsKeyboardEnabled() &&
+ !GetContainer(kShellWindowId_VirtualKeyboardContainer)) {
varkha 2013/10/04 01:54:07 Could reverse the condition and return early.
bshe 2013/10/04 03:04:39 Done.
+ DCHECK(keyboard_controller);
+ keyboard_controller->AddObserver(shelf()->shelf_layout_manager());
+ keyboard_controller->AddObserver(panel_layout_manager_);
varkha 2013/10/04 01:54:07 AddObserver(docked_layout_manager_)
bshe 2013/10/04 03:04:39 Added in patchset 7 after rebase. On 2013/10/04 0
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());
}
}
+void RootWindowController::DisableKeyboard(
+ keyboard::KeyboardController* keyboard_controller) {
+ if (keyboard::IsKeyboardEnabled()) {
varkha 2013/10/04 01:54:07 Favor early return.
bshe 2013/10/04 03:04:39 Done.
+ DCHECK(keyboard_controller);
+ aura::Window* keyboard_container =
+ keyboard_controller->GetContainerWindow();
+ if (keyboard_container->GetRootWindow() == root_window()) {
+ root_window()->RemoveChild(keyboard_container);
+ keyboard_controller->RemoveObserver(shelf()->shelf_layout_manager());
+ keyboard_controller->RemoveObserver(panel_layout_manager_);
varkha 2013/10/04 01:54:07 RemoveObserver(docked_layout_manager_)
bshe 2013/10/04 03:04:39 Removed in patchset 7 after rebase On 2013/10/04 0
+ }
+ }
+}
+
////////////////////////////////////////////////////////////////////////////////
// RootWindowController, private:
@@ -812,8 +825,6 @@ void RootWindowController::DisableTouchHudProjection() {
}
void RootWindowController::OnLoginStateChanged(user::LoginStatus status) {
- if (status != user::LOGGED_IN_NONE)
- InitKeyboard();
shelf_->shelf_layout_manager()->UpdateVisibilityState();
}

Powered by Google App Engine
This is Rietveld 408576698