| Index: ash/wm/workspace/workspace_layout_manager.cc
|
| diff --git a/ash/wm/workspace/workspace_layout_manager.cc b/ash/wm/workspace/workspace_layout_manager.cc
|
| index a791db5b055c101253a64c3f1b541b18cc45162c..b02baae908de0e06abd7d7f7aa4cf0fdc2ec1468 100644
|
| --- a/ash/wm/workspace/workspace_layout_manager.cc
|
| +++ b/ash/wm/workspace/workspace_layout_manager.cc
|
| @@ -72,7 +72,9 @@ WorkspaceLayoutManager::WorkspaceLayoutManager(aura::Window* window)
|
| shelf_(NULL),
|
| window_(window),
|
| work_area_in_parent_(ScreenAsh::GetDisplayWorkAreaBoundsInParent(
|
| - window->parent())) {
|
| + window->parent())),
|
| + is_fullscreen_(GetRootWindowController(
|
| + window->GetRootWindow())->GetWindowForFullscreenMode() != NULL) {
|
| }
|
|
|
| WorkspaceLayoutManager::~WorkspaceLayoutManager() {
|
| @@ -85,7 +87,7 @@ void WorkspaceLayoutManager::SetShelf(internal::ShelfLayoutManager* shelf) {
|
| void WorkspaceLayoutManager::OnWindowAddedToLayout(Window* child) {
|
| AdjustWindowBoundsWhenAdded(wm::GetWindowState(child));
|
| BaseLayoutManager::OnWindowAddedToLayout(child);
|
| - UpdateDesktopVisibility();
|
| + UpdateShelfVisibility();
|
| WindowPositioner::RearrangeVisibleWindowOnShow(child);
|
| }
|
|
|
| @@ -97,7 +99,7 @@ void WorkspaceLayoutManager::OnWillRemoveWindowFromLayout(Window* child) {
|
|
|
| void WorkspaceLayoutManager::OnWindowRemovedFromLayout(Window* child) {
|
| BaseLayoutManager::OnWindowRemovedFromLayout(child);
|
| - UpdateDesktopVisibility();
|
| + UpdateShelfVisibility();
|
| }
|
|
|
| void WorkspaceLayoutManager::OnChildWindowVisibilityChanged(Window* child,
|
| @@ -106,13 +108,11 @@ void WorkspaceLayoutManager::OnChildWindowVisibilityChanged(Window* child,
|
| if (child->TargetVisibility()) {
|
| WindowPositioner::RearrangeVisibleWindowOnShow(child);
|
| } else {
|
| - if (wm::GetWindowState(child)->IsFullscreen()) {
|
| - ash::Shell::GetInstance()->NotifyFullscreenStateChange(
|
| - false, child->GetRootWindow());
|
| - }
|
| + if (wm::GetWindowState(child)->IsFullscreen())
|
| + UpdateFullscreenState();
|
| WindowPositioner::RearrangeVisibleWindowOnHideOrRemove(child);
|
| }
|
| - UpdateDesktopVisibility();
|
| + UpdateShelfVisibility();
|
| }
|
|
|
| void WorkspaceLayoutManager::SetChildBounds(
|
| @@ -135,7 +135,7 @@ void WorkspaceLayoutManager::SetChildBounds(
|
| AdjustSnappedBounds(window_state, &child_bounds);
|
| SetChildBoundsDirect(child, child_bounds);
|
| }
|
| - UpdateDesktopVisibility();
|
| + UpdateShelfVisibility();
|
| }
|
|
|
| void WorkspaceLayoutManager::OnDisplayWorkAreaInsetsChanged() {
|
| @@ -157,6 +157,12 @@ void WorkspaceLayoutManager::OnWindowPropertyChanged(Window* window,
|
| }
|
| }
|
|
|
| +void WorkspaceLayoutManager::OnWindowStackingChanged(aura::Window* window) {
|
| + BaseLayoutManager::OnWindowStackingChanged(window);
|
| + UpdateShelfVisibility();
|
| + UpdateFullscreenState();
|
| +}
|
| +
|
| void WorkspaceLayoutManager::OnTrackedByWorkspaceChanged(
|
| wm::WindowState* window_state,
|
| bool old){
|
| @@ -198,9 +204,7 @@ void WorkspaceLayoutManager::OnWindowShowTypeChanged(
|
| if (old_state != new_state &&
|
| (new_state == ui::SHOW_STATE_FULLSCREEN ||
|
| old_state == ui::SHOW_STATE_FULLSCREEN)) {
|
| - ash::Shell::GetInstance()->NotifyFullscreenStateChange(
|
| - new_state == ui::SHOW_STATE_FULLSCREEN,
|
| - window_state->window()->GetRootWindow());
|
| + UpdateFullscreenState();
|
| }
|
|
|
| UpdateBoundsFromShowState(window_state, old_state);
|
| @@ -215,7 +219,7 @@ void WorkspaceLayoutManager::ShowStateChanged(
|
| wm::WindowState* state,
|
| ui::WindowShowState last_show_state) {
|
| BaseLayoutManager::ShowStateChanged(state, last_show_state);
|
| - UpdateDesktopVisibility();
|
| + UpdateShelfVisibility();
|
| }
|
|
|
| void WorkspaceLayoutManager::AdjustAllWindowsBoundsForWorkAreaChange(
|
| @@ -296,11 +300,21 @@ void WorkspaceLayoutManager::AdjustWindowBoundsWhenAdded(
|
| window->SetBounds(bounds);
|
| }
|
|
|
| -void WorkspaceLayoutManager::UpdateDesktopVisibility() {
|
| +void WorkspaceLayoutManager::UpdateShelfVisibility() {
|
| if (shelf_)
|
| shelf_->UpdateVisibilityState();
|
| }
|
|
|
| +void WorkspaceLayoutManager::UpdateFullscreenState() {
|
| + bool is_fullscreen = GetRootWindowController(
|
| + window_->GetRootWindow())->GetWindowForFullscreenMode() != NULL;
|
| + if (is_fullscreen != is_fullscreen_) {
|
| + ash::Shell::GetInstance()->NotifyFullscreenStateChange(
|
| + is_fullscreen, window_->GetRootWindow());
|
| + is_fullscreen_ = is_fullscreen;
|
| + }
|
| +}
|
| +
|
| void WorkspaceLayoutManager::UpdateBoundsFromShowState(
|
| wm::WindowState* window_state,
|
| ui::WindowShowState last_show_state) {
|
|
|