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; |