Chromium Code Reviews| 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..9f3dce046289a3c676b664475e2ae5a27984946f 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_(static_cast<bool>(GetRootWindowController( |
| + window->GetRootWindow())->GetTopmostFullscreenWindow())) { |
| } |
| WorkspaceLayoutManager::~WorkspaceLayoutManager() { |
| @@ -106,10 +108,8 @@ 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(); |
| @@ -157,6 +157,12 @@ void WorkspaceLayoutManager::OnWindowPropertyChanged(Window* window, |
| } |
| } |
| +void WorkspaceLayoutManager::OnWindowStackingChanged(aura::Window* window) { |
| + BaseLayoutManager::OnWindowStackingChanged(window); |
| + UpdateDesktopVisibility(); |
|
pkotwicz
2013/12/05 02:46:29
Can you please rename UpdateDesktopVisibility() to
flackr
2013/12/05 16:48:54
Done.
|
| + 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); |
| @@ -301,6 +305,16 @@ void WorkspaceLayoutManager::UpdateDesktopVisibility() { |
| shelf_->UpdateVisibilityState(); |
| } |
| +void WorkspaceLayoutManager::UpdateFullscreenState() { |
| + bool is_fullscreen = static_cast<bool>(GetRootWindowController( |
|
pkotwicz
2013/12/05 02:46:29
Can you explicity check for NULL instead of the st
flackr
2013/12/05 16:48:54
Done.
|
| + window_->GetRootWindow())->GetTopmostFullscreenWindow()); |
| + 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) { |