Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ash/root_window_controller.h" | 5 #include "ash/root_window_controller.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <queue> | 8 #include <queue> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 655 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 666 wm::GetWindowForFullscreenMode(WmWindow::Get(GetRootWindow()))); | 666 wm::GetWindowForFullscreenMode(WmWindow::Get(GetRootWindow()))); |
| 667 } | 667 } |
| 668 | 668 |
| 669 void RootWindowController::ActivateKeyboard( | 669 void RootWindowController::ActivateKeyboard( |
| 670 keyboard::KeyboardController* keyboard_controller) { | 670 keyboard::KeyboardController* keyboard_controller) { |
| 671 if (!keyboard::IsKeyboardEnabled() || | 671 if (!keyboard::IsKeyboardEnabled() || |
| 672 GetContainer(kShellWindowId_VirtualKeyboardContainer)) { | 672 GetContainer(kShellWindowId_VirtualKeyboardContainer)) { |
| 673 return; | 673 return; |
| 674 } | 674 } |
| 675 DCHECK(keyboard_controller); | 675 DCHECK(keyboard_controller); |
| 676 keyboard_controller->AddObserver(wm_shelf_->shelf_layout_manager()); | 676 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.
| |
| 677 keyboard_controller->AddObserver(panel_layout_manager()); | 677 keyboard_controller); |
| 678 keyboard_controller->AddObserver(docked_window_layout_manager()); | 678 panel_layout_manager()->StartObservingKeyboard(keyboard_controller); |
| 679 keyboard_controller->AddObserver(workspace_controller()->layout_manager()); | 679 docked_window_layout_manager()->StartObservingKeyboard(keyboard_controller); |
| 680 keyboard_controller->AddObserver( | 680 workspace_controller()->layout_manager()->StartObservingKeyboard( |
| 681 always_on_top_controller_->GetLayoutManager()); | 681 keyboard_controller); |
| 682 always_on_top_controller_->GetLayoutManager()->StartObservingKeyboard( | |
| 683 keyboard_controller); | |
| 682 Shell::GetInstance()->NotifyVirtualKeyboardActivated(true); | 684 Shell::GetInstance()->NotifyVirtualKeyboardActivated(true); |
| 683 aura::Window* parent = GetContainer(kShellWindowId_ImeWindowParentContainer); | 685 aura::Window* parent = GetContainer(kShellWindowId_ImeWindowParentContainer); |
| 684 DCHECK(parent); | 686 DCHECK(parent); |
| 685 aura::Window* keyboard_container = keyboard_controller->GetContainerWindow(); | 687 aura::Window* keyboard_container = keyboard_controller->GetContainerWindow(); |
| 686 keyboard_container->set_id(kShellWindowId_VirtualKeyboardContainer); | 688 keyboard_container->set_id(kShellWindowId_VirtualKeyboardContainer); |
| 687 parent->AddChild(keyboard_container); | 689 parent->AddChild(keyboard_container); |
| 688 } | 690 } |
| 689 | 691 |
| 690 void RootWindowController::DeactivateKeyboard( | 692 void RootWindowController::DeactivateKeyboard( |
| 691 keyboard::KeyboardController* keyboard_controller) { | 693 keyboard::KeyboardController* keyboard_controller) { |
| 692 if (!keyboard_controller || | 694 if (!keyboard_controller || |
| 693 !keyboard_controller->keyboard_container_initialized()) { | 695 !keyboard_controller->keyboard_container_initialized()) { |
| 694 return; | 696 return; |
| 695 } | 697 } |
| 696 aura::Window* keyboard_container = keyboard_controller->GetContainerWindow(); | 698 aura::Window* keyboard_container = keyboard_controller->GetContainerWindow(); |
| 697 if (keyboard_container->GetRootWindow() == GetRootWindow()) { | 699 if (keyboard_container->GetRootWindow() == GetRootWindow()) { |
| 698 aura::Window* parent = | 700 aura::Window* parent = |
| 699 GetContainer(kShellWindowId_ImeWindowParentContainer); | 701 GetContainer(kShellWindowId_ImeWindowParentContainer); |
| 700 DCHECK(parent); | 702 DCHECK(parent); |
| 701 // Virtual keyboard may be deactivated while still showing, hide the | 703 // Virtual keyboard may be deactivated while still showing, hide the |
| 702 // keyboard before removing it from view hierarchy. | 704 // keyboard before removing it from view hierarchy. |
| 703 keyboard_controller->HideKeyboard( | 705 keyboard_controller->HideKeyboard( |
| 704 keyboard::KeyboardController::HIDE_REASON_AUTOMATIC); | 706 keyboard::KeyboardController::HIDE_REASON_AUTOMATIC); |
| 705 parent->RemoveChild(keyboard_container); | 707 parent->RemoveChild(keyboard_container); |
| 706 keyboard_controller->RemoveObserver(wm_shelf_->shelf_layout_manager()); | 708 wm_shelf_->shelf_layout_manager()->StopObservingKeyboard( |
| 707 keyboard_controller->RemoveObserver(panel_layout_manager()); | 709 keyboard_controller); |
| 708 keyboard_controller->RemoveObserver(docked_window_layout_manager()); | 710 panel_layout_manager()->StopObservingKeyboard(keyboard_controller); |
| 709 keyboard_controller->RemoveObserver( | 711 docked_window_layout_manager()->StopObservingKeyboard(keyboard_controller); |
| 710 workspace_controller()->layout_manager()); | 712 // |workspace_controller_| could be released in MoveWindowsTo. |
| 711 keyboard_controller->RemoveObserver( | 713 if (workspace_controller()) { |
| 712 always_on_top_controller_->GetLayoutManager()); | 714 workspace_controller()->layout_manager()->StopObservingKeyboard( |
| 715 keyboard_controller); | |
| 716 } | |
| 717 always_on_top_controller_->GetLayoutManager()->StopObservingKeyboard( | |
| 718 keyboard_controller); | |
| 713 Shell::GetInstance()->NotifyVirtualKeyboardActivated(false); | 719 Shell::GetInstance()->NotifyVirtualKeyboardActivated(false); |
| 714 } | 720 } |
| 715 } | 721 } |
| 716 | 722 |
| 717 bool RootWindowController::IsVirtualKeyboardWindow(aura::Window* window) { | 723 bool RootWindowController::IsVirtualKeyboardWindow(aura::Window* window) { |
| 718 aura::Window* parent = GetContainer(kShellWindowId_ImeWindowParentContainer); | 724 aura::Window* parent = GetContainer(kShellWindowId_ImeWindowParentContainer); |
| 719 return parent ? parent->Contains(window) : false; | 725 return parent ? parent->Contains(window) : false; |
| 720 } | 726 } |
| 721 | 727 |
| 722 void RootWindowController::SetTouchAccessibilityAnchorPoint( | 728 void RootWindowController::SetTouchAccessibilityAnchorPoint( |
| (...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1153 EnableTouchHudProjection(); | 1159 EnableTouchHudProjection(); |
| 1154 else | 1160 else |
| 1155 DisableTouchHudProjection(); | 1161 DisableTouchHudProjection(); |
| 1156 } | 1162 } |
| 1157 | 1163 |
| 1158 RootWindowController* GetRootWindowController(const aura::Window* root_window) { | 1164 RootWindowController* GetRootWindowController(const aura::Window* root_window) { |
| 1159 return root_window ? GetRootWindowSettings(root_window)->controller : nullptr; | 1165 return root_window ? GetRootWindowSettings(root_window)->controller : nullptr; |
| 1160 } | 1166 } |
| 1161 | 1167 |
| 1162 } // namespace ash | 1168 } // namespace ash |
| OLD | NEW |