Index: ash/wm/custom_frame_view_ash.h |
diff --git a/ash/wm/custom_frame_view_ash.h b/ash/wm/custom_frame_view_ash.h |
index 9593abbe70cb216c1d009f5c086606021d149bcd..7c58a1ed449190e1e5507669e0c40ce09a2fc544 100644 |
--- a/ash/wm/custom_frame_view_ash.h |
+++ b/ash/wm/custom_frame_view_ash.h |
@@ -12,6 +12,7 @@ |
namespace ash { |
class FrameBorderHitTestController; |
class HeaderPainter; |
+class ImmersiveFullscreenController; |
} |
namespace gfx { |
class Font; |
@@ -22,10 +23,12 @@ class Widget; |
namespace ash { |
-class FrameCaptionButtonContainerView; |
- |
-// A NonClientFrameView used for dialogs and other non-browser windows. |
-// See also views::CustomFrameView and BrowserNonClientFrameViewAsh. |
+// A NonClientFrameView used for packaged apps, dialogs and other non-browser |
+// windows. It supports immersive fullscreen. When in immersive fullscreen, the |
+// client view takes up the entire widget and the window header is an overlay. |
+// The window header overlay slides onscreen when the user hovers the mouse at |
+// the top of the screen. See also views::CustomFrameView and |
+// BrowserNonClientFrameViewAsh. |
class ASH_EXPORT CustomFrameViewAsh : public views::NonClientFrameView { |
public: |
// Internal class name. |
@@ -34,6 +37,13 @@ class ASH_EXPORT CustomFrameViewAsh : public views::NonClientFrameView { |
explicit CustomFrameViewAsh(views::Widget* frame); |
virtual ~CustomFrameViewAsh(); |
+ // Inits |immersive_fullscreen_controller| so that the controller reveals |
+ // and hides |header_view_| in immersive fullscreen. |
+ // CustomFrameViewAsh does not take ownership of |
+ // |immersive_fullscreen_controller|. |
+ void InitImmersiveFullscreenControllerForView( |
+ ImmersiveFullscreenController* immersive_fullscreen_controller); |
+ |
// views::NonClientFrameView overrides: |
virtual gfx::Rect GetBoundsForClientView() const OVERRIDE; |
virtual gfx::Rect GetWindowBoundsForClientBounds( |
@@ -47,24 +57,24 @@ class ASH_EXPORT CustomFrameViewAsh : public views::NonClientFrameView { |
// views::View overrides: |
virtual gfx::Size GetPreferredSize() OVERRIDE; |
- virtual void Layout() OVERRIDE; |
virtual const char* GetClassName() const OVERRIDE; |
- virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; |
virtual gfx::Size GetMinimumSize() OVERRIDE; |
virtual gfx::Size GetMaximumSize() OVERRIDE; |
+ virtual void SchedulePaintInRect(const gfx::Rect& r) OVERRIDE; |
+ virtual bool HitTestRect(const gfx::Rect& rect) const OVERRIDE; |
private: |
+ class OverlayView; |
+ |
// Height from top of window to top of client area. |
int NonClientTopBorderHeight() const; |
// Not owned. |
views::Widget* frame_; |
- // View which contains the window controls. |
- FrameCaptionButtonContainerView* caption_button_container_; |
- |
- // Helper class for painting the header. |
- scoped_ptr<HeaderPainter> header_painter_; |
+ // View which contains the title and window controls. |
+ class HeaderView; |
+ HeaderView* header_view_; |
// Updates the hittest bounds overrides based on the window show type. |
scoped_ptr<FrameBorderHitTestController> frame_border_hit_test_controller_; |