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 a5ca0a08b7dfbcd4204b39b0b8d4e26d203bc277..d6118ea851469d6f3996dcffbbf107df15965606 100644 |
| --- a/ash/wm/workspace/workspace_layout_manager.cc |
| +++ b/ash/wm/workspace/workspace_layout_manager.cc |
| @@ -16,6 +16,7 @@ |
| #include "ash/wm/window_properties.h" |
| #include "ash/wm/window_state.h" |
| #include "ash/wm/window_util.h" |
| +#include "ash/wm/workspace/workspace_layout_manager_backdrop.h" |
| #include "ui/aura/client/activation_client.h" |
| #include "ui/aura/client/aura_constants.h" |
| #include "ui/aura/window.h" |
| @@ -59,6 +60,15 @@ void WorkspaceLayoutManager::SetShelf(internal::ShelfLayoutManager* shelf) { |
| shelf_ = shelf; |
| } |
| +void WorkspaceLayoutManager::AddBackdropBehindTopWindow(bool enable) { |
| + if ((NULL != backdrop_.get()) == enable) |
|
sky
2014/03/06 01:03:18
nit: creating a local variable for NULL != backdro
Mr4D (OOO till 08-26)
2014/03/06 17:17:16
Done.
|
| + return; |
| + if (enable) |
| + backdrop_.reset(new WorkspaceLayoutManagerBackdrop(window_)); |
| + else |
| + backdrop_.reset(); |
| +} |
| + |
| ////////////////////////////////////////////////////////////////////////////// |
| // WorkspaceLayoutManager, aura::LayoutManager implementation: |
| @@ -70,6 +80,7 @@ void WorkspaceLayoutManager::OnWindowAddedToLayout(Window* child) { |
| window_state->AddObserver(this); |
| UpdateShelfVisibility(); |
| UpdateFullscreenState(); |
| + UpdateStackingAndVisibilityOfBackdrop(); |
|
sky
2014/03/06 01:03:18
How about a delegate method that is called at all
Mr4D (OOO till 08-26)
2014/03/06 17:17:16
Done.
|
| WindowPositioner::RearrangeVisibleWindowOnShow(child); |
| } |
| @@ -85,6 +96,7 @@ void WorkspaceLayoutManager::OnWillRemoveWindowFromLayout(Window* child) { |
| void WorkspaceLayoutManager::OnWindowRemovedFromLayout(Window* child) { |
| UpdateShelfVisibility(); |
| UpdateFullscreenState(); |
| + UpdateStackingAndVisibilityOfBackdrop(); |
| } |
| void WorkspaceLayoutManager::OnChildWindowVisibilityChanged(Window* child, |
| @@ -102,6 +114,7 @@ void WorkspaceLayoutManager::OnChildWindowVisibilityChanged(Window* child, |
| WindowPositioner::RearrangeVisibleWindowOnHideOrRemove(child); |
| } |
| UpdateShelfVisibility(); |
| + UpdateStackingAndVisibilityOfBackdrop(); |
| } |
| void WorkspaceLayoutManager::SetChildBounds( |
| @@ -139,6 +152,7 @@ void WorkspaceLayoutManager::OnWindowPropertyChanged(Window* window, |
| void WorkspaceLayoutManager::OnWindowStackingChanged(aura::Window* window) { |
| UpdateShelfVisibility(); |
| UpdateFullscreenState(); |
| + UpdateStackingAndVisibilityOfBackdrop(); |
| } |
| void WorkspaceLayoutManager::OnWindowDestroying(aura::Window* window) { |
| @@ -181,6 +195,7 @@ void WorkspaceLayoutManager::OnPostWindowShowTypeChange( |
| UpdateFullscreenState(); |
| UpdateShelfVisibility(); |
| + UpdateStackingAndVisibilityOfBackdrop(); |
| } |
| ////////////////////////////////////////////////////////////////////////////// |
| @@ -219,6 +234,11 @@ void WorkspaceLayoutManager::UpdateShelfVisibility() { |
| shelf_->UpdateVisibilityState(); |
| } |
| +void WorkspaceLayoutManager::UpdateStackingAndVisibilityOfBackdrop() { |
| + if (backdrop_) |
| + backdrop_->RestackOrHideWindow(); |
| +} |
| + |
| void WorkspaceLayoutManager::UpdateFullscreenState() { |
| bool is_fullscreen = GetRootWindowController( |
| window_->GetRootWindow())->GetWindowForFullscreenMode() != NULL; |