summaryrefslogtreecommitdiffstats
path: root/ash/root_window_controller.cc
diff options
context:
space:
mode:
authoroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-18 16:26:10 +0000
committeroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-18 16:26:10 +0000
commit1ca79d4a521fdad4067298110a4f346f0629f6a3 (patch)
treea34c08c64ef5827e14cbd4d77f488e3622bf55df /ash/root_window_controller.cc
parent388f6742bf424d0f7c627250d222465f60e7698d (diff)
downloadchromium_src-1ca79d4a521fdad4067298110a4f346f0629f6a3.zip
chromium_src-1ca79d4a521fdad4067298110a4f346f0629f6a3.tar.gz
chromium_src-1ca79d4a521fdad4067298110a4f346f0629f6a3.tar.bz2
Snap widgets to pixel boundary on ash
Introduced SnapToPixelLayoutManager and used where it makes sense. WorkspaceLayoutManager uses WindowState, so it's the property is manually set there. This depends on the following CL: https://codereview.chromium.org/375693006/ BUG=391822 Review URL: https://codereview.chromium.org/357063002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@284119 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/root_window_controller.cc')
-rw-r--r--ash/root_window_controller.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/ash/root_window_controller.cc b/ash/root_window_controller.cc
index 60018d5..26b925c0 100644
--- a/ash/root_window_controller.cc
+++ b/ash/root_window_controller.cc
@@ -856,6 +856,10 @@ void RootWindowController::InitLayoutManagers() {
new DockedWindowLayoutManager(docked_container, workspace_controller());
docked_container->SetLayoutManager(docked_layout_manager_);
+ // Installs SnapLayoutManager to containers who set the
+ // |kSnapsChildrenToPhysicalPixelBoundary| property.
+ wm::InstallSnapLayoutManagerToContainers(root_window);
+
// Create Panel layout manager
aura::Window* panel_container = GetContainer(kShellWindowId_PanelContainer);
panel_layout_manager_ = new PanelLayoutManager(panel_container);
@@ -955,6 +959,7 @@ void RootWindowController::CreateContainersInRootWindow(
"DefaultContainer",
non_lock_screen_containers);
::wm::SetChildWindowVisibilityChangesAnimated(default_container);
+ wm::SetSnapsChildrenToPhysicalPixelBoundary(default_container);
SetUsesScreenCoordinates(default_container);
SetUsesEasyResizeTargeter(default_container);
@@ -963,6 +968,7 @@ void RootWindowController::CreateContainersInRootWindow(
"AlwaysOnTopContainer",
non_lock_screen_containers);
::wm::SetChildWindowVisibilityChangesAnimated(always_on_top_container);
+ wm::SetSnapsChildrenToPhysicalPixelBoundary(always_on_top_container);
SetUsesScreenCoordinates(always_on_top_container);
aura::Window* docked_container = CreateContainer(
@@ -970,6 +976,7 @@ void RootWindowController::CreateContainersInRootWindow(
"DockedContainer",
non_lock_screen_containers);
::wm::SetChildWindowVisibilityChangesAnimated(docked_container);
+ wm::SetSnapsChildrenToPhysicalPixelBoundary(docked_container);
SetUsesScreenCoordinates(docked_container);
SetUsesEasyResizeTargeter(docked_container);
@@ -977,6 +984,7 @@ void RootWindowController::CreateContainersInRootWindow(
CreateContainer(kShellWindowId_ShelfContainer,
"ShelfContainer",
non_lock_screen_containers);
+ wm::SetSnapsChildrenToPhysicalPixelBoundary(shelf_container);
SetUsesScreenCoordinates(shelf_container);
DescendantShouldStayInSameRootWindow(shelf_container);
@@ -984,12 +992,14 @@ void RootWindowController::CreateContainersInRootWindow(
kShellWindowId_PanelContainer,
"PanelContainer",
non_lock_screen_containers);
+ wm::SetSnapsChildrenToPhysicalPixelBoundary(panel_container);
SetUsesScreenCoordinates(panel_container);
aura::Window* shelf_bubble_container =
CreateContainer(kShellWindowId_ShelfBubbleContainer,
"ShelfBubbleContainer",
non_lock_screen_containers);
+ wm::SetSnapsChildrenToPhysicalPixelBoundary(shelf_bubble_container);
SetUsesScreenCoordinates(shelf_bubble_container);
DescendantShouldStayInSameRootWindow(shelf_bubble_container);
@@ -997,12 +1007,14 @@ void RootWindowController::CreateContainersInRootWindow(
CreateContainer(kShellWindowId_AppListContainer,
"AppListContainer",
non_lock_screen_containers);
+ wm::SetSnapsChildrenToPhysicalPixelBoundary(app_list_container);
SetUsesScreenCoordinates(app_list_container);
aura::Window* modal_container = CreateContainer(
kShellWindowId_SystemModalContainer,
"SystemModalContainer",
non_lock_screen_containers);
+ wm::SetSnapsChildrenToPhysicalPixelBoundary(modal_container);
modal_container->SetLayoutManager(
new SystemModalContainerLayoutManager(modal_container));
::wm::SetChildWindowVisibilityChangesAnimated(modal_container);
@@ -1015,6 +1027,7 @@ void RootWindowController::CreateContainersInRootWindow(
kShellWindowId_LockScreenContainer,
"LockScreenContainer",
lock_screen_containers);
+ wm::SetSnapsChildrenToPhysicalPixelBoundary(lock_container);
if (CommandLine::ForCurrentProcess()->HasSwitch(
switches::kAshDisableLockLayoutManager)) {
lock_container->SetLayoutManager(
@@ -1029,6 +1042,7 @@ void RootWindowController::CreateContainersInRootWindow(
kShellWindowId_LockSystemModalContainer,
"LockSystemModalContainer",
lock_screen_containers);
+ wm::SetSnapsChildrenToPhysicalPixelBoundary(lock_modal_container);
lock_modal_container->SetLayoutManager(
new SystemModalContainerLayoutManager(lock_modal_container));
::wm::SetChildWindowVisibilityChangesAnimated(lock_modal_container);
@@ -1039,6 +1053,7 @@ void RootWindowController::CreateContainersInRootWindow(
CreateContainer(kShellWindowId_StatusContainer,
"StatusContainer",
lock_screen_related_containers);
+ wm::SetSnapsChildrenToPhysicalPixelBoundary(status_container);
SetUsesScreenCoordinates(status_container);
DescendantShouldStayInSameRootWindow(status_container);
@@ -1047,6 +1062,7 @@ void RootWindowController::CreateContainersInRootWindow(
"SettingBubbleContainer",
lock_screen_related_containers);
::wm::SetChildWindowVisibilityChangesAnimated(settings_bubble_container);
+ wm::SetSnapsChildrenToPhysicalPixelBoundary(settings_bubble_container);
SetUsesScreenCoordinates(settings_bubble_container);
DescendantShouldStayInSameRootWindow(settings_bubble_container);
@@ -1055,6 +1071,7 @@ void RootWindowController::CreateContainersInRootWindow(
"MenuContainer",
lock_screen_related_containers);
::wm::SetChildWindowVisibilityChangesAnimated(menu_container);
+ wm::SetSnapsChildrenToPhysicalPixelBoundary(menu_container);
SetUsesScreenCoordinates(menu_container);
aura::Window* drag_drop_container = CreateContainer(
@@ -1062,18 +1079,22 @@ void RootWindowController::CreateContainersInRootWindow(
"DragImageAndTooltipContainer",
lock_screen_related_containers);
::wm::SetChildWindowVisibilityChangesAnimated(drag_drop_container);
+ wm::SetSnapsChildrenToPhysicalPixelBoundary(drag_drop_container);
SetUsesScreenCoordinates(drag_drop_container);
aura::Window* overlay_container = CreateContainer(
kShellWindowId_OverlayContainer,
"OverlayContainer",
lock_screen_related_containers);
+ wm::SetSnapsChildrenToPhysicalPixelBoundary(overlay_container);
SetUsesScreenCoordinates(overlay_container);
aura::Window* virtual_keyboard_parent_container = CreateContainer(
kShellWindowId_VirtualKeyboardParentContainer,
"VirtualKeyboardParentContainer",
root_window);
+ wm::SetSnapsChildrenToPhysicalPixelBoundary(
+ virtual_keyboard_parent_container);
SetUsesScreenCoordinates(virtual_keyboard_parent_container);
#if defined(OS_CHROMEOS)