Index: ash/root_window_controller.cc |
diff --git a/ash/root_window_controller.cc b/ash/root_window_controller.cc |
index 60018d5be523d3ee766cbe4da0e3264325008969..26b925c014c8f8c9669c7d060593dfa81f2aa7b0 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) |