Index: ash/wm/maximize_mode/workspace_backdrop_delegate.h |
diff --git a/ash/wm/maximize_mode/workspace_backdrop_delegate.h b/ash/wm/maximize_mode/workspace_backdrop_delegate.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2a9ab2d51e2916f2924a68504b1e0ad2f2b4bdb3 |
--- /dev/null |
+++ b/ash/wm/maximize_mode/workspace_backdrop_delegate.h |
@@ -0,0 +1,79 @@ |
+// Copyright (c) 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef ASH_WM_MAXIMIZE_MODE_WORKSPACE_BACKDROP_DELEGATE_H_ |
+#define ASH_WM_MAXIMIZE_MODE_WORKSPACE_BACKDROP_DELEGATE_H_ |
+ |
+#include "ash/wm/workspace/workspace_layout_manager_delegate.h" |
+#include "ui/aura/window_observer.h" |
+ |
+namespace aura { |
+class Window; |
+} |
+ |
+namespace ui { |
+class Layer; |
+} |
+ |
+namespace views { |
+class Widget; |
+} |
+ |
+namespace ash { |
+ |
+namespace internal { |
+ |
+// A background which gets created for a container |window| and which gets |
+// stacked behind the topmost window (within that container) covering the |
+// entire container. |
+class WorkspaceBackdropDelegate : public aura::WindowObserver, |
+ public WorkspaceLayoutManagerDelegate { |
+ public: |
+ explicit WorkspaceBackdropDelegate(aura::Window* container); |
+ virtual ~WorkspaceBackdropDelegate(); |
+ |
+ // WindowObserver overrides: |
+ virtual void OnWindowBoundsChanged(aura::Window* window, |
+ const gfx::Rect& old_bounds, |
+ const gfx::Rect& new_bounds) OVERRIDE; |
+ |
+ // WorkspaceLayoutManagerDelegate overrides: |
+ virtual void OnWindowAddedToLayout(aura::Window* child); |
+ virtual void OnWindowRemovedFromLayout(aura::Window* child); |
+ virtual void OnChildWindowVisibilityChanged(aura::Window* child, |
+ bool visible); |
+ virtual void OnWindowStackingChanged(aura::Window* window); |
+ virtual void OnPostWindowStateTypeChange(wm::WindowState* window_state, |
+ wm::WindowStateType old_type); |
+ |
+ private: |
+ // Restack the backdrop relatively to the other windows in the container. |
+ void RestackBackdrop(); |
+ |
+ // Returns the current visible top level window in the container. |
+ aura::Window* GetCurrentTopWindow(); |
+ |
+ // Position & size the background over the container window. |
+ void AdjustToContainerBounds(); |
+ |
+ // Show the overlay. |
+ void Show(); |
+ |
+ // The background which covers the rest of the screen. |
+ views::Widget* background_; |
+ |
+ // The window which is being "maximized". |
+ aura::Window* container_; |
+ |
+ // If true, the |RestackOrHideWindow| might recurse. |
+ bool in_restacking_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(WorkspaceBackdropDelegate); |
+}; |
+ |
+} // namespace internal |
+ |
+} // namespace ash |
+ |
+#endif // ASH_WM_MAXIMIZE_MODE_WORKSPACE_BACKDROP_DELEGATE_H_ |