summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ash/display/cursor_window_controller.cc2
-rw-r--r--ash/root_window_controller.cc25
-rw-r--r--ash/shell_unittest.cc6
-rw-r--r--ash/shell_window_ids.h10
-rw-r--r--chrome/browser/chromeos/accessibility/accessibility_manager.cc9
5 files changed, 38 insertions, 14 deletions
diff --git a/ash/display/cursor_window_controller.cc b/ash/display/cursor_window_controller.cc
index 05f242d..6fb1a08 100644
--- a/ash/display/cursor_window_controller.cc
+++ b/ash/display/cursor_window_controller.cc
@@ -137,7 +137,7 @@ void CursorWindowController::SetDisplay(const gfx::Display& display) {
return;
SetContainer(GetRootWindowController(root_window)->GetContainer(
- kShellWindowId_OverlayContainer));
+ kShellWindowId_MouseCursorContainer));
SetBoundsInScreen(display.bounds());
}
diff --git a/ash/root_window_controller.cc b/ash/root_window_controller.cc
index 06687e4..55196b4 100644
--- a/ash/root_window_controller.cc
+++ b/ash/root_window_controller.cc
@@ -617,7 +617,9 @@ void RootWindowController::ActivateKeyboard(
keyboard_controller->AddObserver(panel_layout_manager_);
keyboard_controller->AddObserver(docked_layout_manager_);
}
- aura::Window* parent = root_window();
+ aura::Window* parent = GetContainer(
+ kShellWindowId_VirtualKeyboardParentContainer);
+ DCHECK(parent);
aura::Window* keyboard_container =
keyboard_controller->GetContainerWindow();
keyboard_container->set_id(kShellWindowId_VirtualKeyboardContainer);
@@ -636,7 +638,10 @@ void RootWindowController::DeactivateKeyboard(
aura::Window* keyboard_container =
keyboard_controller->GetContainerWindow();
if (keyboard_container->GetRootWindow() == root_window()) {
- root_window()->RemoveChild(keyboard_container);
+ aura::Window* parent = GetContainer(
+ kShellWindowId_VirtualKeyboardParentContainer);
+ DCHECK(parent);
+ parent->RemoveChild(keyboard_container);
if (!keyboard::IsKeyboardUsabilityExperimentEnabled()) {
// Virtual keyboard may be deactivated while still showing, notify all
// observers that keyboard bounds changed to 0 before remove them.
@@ -966,8 +971,22 @@ void RootWindowController::CreateContainersInRootWindow(
lock_screen_related_containers);
SetUsesScreenCoordinates(overlay_container);
+ aura::Window* virtual_keyboard_parent_container = CreateContainer(
+ kShellWindowId_VirtualKeyboardParentContainer,
+ "VirtualKeyboardParentContainer",
+ root_window);
+ SetUsesScreenCoordinates(virtual_keyboard_parent_container);
+
+#if defined(OS_CHROMEOS)
+ aura::Window* mouse_cursor_container = CreateContainer(
+ kShellWindowId_MouseCursorContainer,
+ "MouseCursorContainer",
+ root_window);
+ SetUsesScreenCoordinates(mouse_cursor_container);
+#endif
+
CreateContainer(kShellWindowId_PowerButtonAnimationContainer,
- "PowerButtonAnimationContainer", root_window) ;
+ "PowerButtonAnimationContainer", root_window);
}
void RootWindowController::EnableTouchHudProjection() {
diff --git a/ash/shell_unittest.cc b/ash/shell_unittest.cc
index 7dd9246..160d6b4 100644
--- a/ash/shell_unittest.cc
+++ b/ash/shell_unittest.cc
@@ -87,6 +87,12 @@ void ExpectAllContainers() {
root_window, internal::kShellWindowId_SettingBubbleContainer));
EXPECT_TRUE(Shell::GetContainer(
root_window, internal::kShellWindowId_OverlayContainer));
+ EXPECT_TRUE(Shell::GetContainer(
+ root_window, internal::kShellWindowId_VirtualKeyboardParentContainer));
+#if defined(OS_CHROMEOS)
+ EXPECT_TRUE(Shell::GetContainer(
+ root_window, internal::kShellWindowId_MouseCursorContainer));
+#endif
}
class ModalWindow : public views::WidgetDelegateView {
diff --git a/ash/shell_window_ids.h b/ash/shell_window_ids.h
index ab5fd23..aedc8b5 100644
--- a/ash/shell_window_ids.h
+++ b/ash/shell_window_ids.h
@@ -99,8 +99,16 @@ const int kShellWindowId_OverlayContainer = 22;
// ID of the window created by PhantomWindowController or DragWindowController.
const int kShellWindowId_PhantomWindow = 23;
+// A parent container that holds the virtual keyboard container. This is to
+// ensure that the virtual keyboard is stacked above most containers but below
+// the mouse cursor and the power off animation.
+const int kShellWindowId_VirtualKeyboardParentContainer = 24;
+
+// The container for mouse cursor.
+const int kShellWindowId_MouseCursorContainer = 25;
+
// The topmost container, used for power off animation.
-const int kShellWindowId_PowerButtonAnimationContainer = 24;
+const int kShellWindowId_PowerButtonAnimationContainer = 26;
} // namespace internal
diff --git a/chrome/browser/chromeos/accessibility/accessibility_manager.cc b/chrome/browser/chromeos/accessibility/accessibility_manager.cc
index f73afbe..aa7a0437 100644
--- a/chrome/browser/chromeos/accessibility/accessibility_manager.cc
+++ b/chrome/browser/chromeos/accessibility/accessibility_manager.cc
@@ -372,10 +372,6 @@ bool AccessibilityManager::ShouldEnableCursorCompositing() {
if (!profile_)
return false;
PrefService* pref_service = profile_->GetPrefs();
- // TODO(hshi): support cursor compositing when virtual keyboard is enabled.
- // See http://www.crbug.com/347009
- if (pref_service->GetBoolean(prefs::kVirtualKeyboardEnabled))
- return false;
// Enable cursor compositing when one or more of the listed accessibility
// features are turned on.
if (pref_service->GetBoolean(prefs::kLargeCursorEnabled) ||
@@ -741,11 +737,6 @@ void AccessibilityManager::UpdateVirtualKeyboardFromPref() {
else if (!keyboard::IsKeyboardEnabled())
ash::Shell::GetInstance()->DeactivateKeyboard();
#endif
-
-#if defined(OS_CHROMEOS)
- ash::Shell::GetInstance()->SetCursorCompositingEnabled(
- ShouldEnableCursorCompositing());
-#endif
}
void AccessibilityManager::CheckBrailleState() {