diff options
Diffstat (limited to 'ash/frame/custom_frame_view_ash.cc')
-rw-r--r-- | ash/frame/custom_frame_view_ash.cc | 50 |
1 files changed, 46 insertions, 4 deletions
diff --git a/ash/frame/custom_frame_view_ash.cc b/ash/frame/custom_frame_view_ash.cc index 196f901..5a90e87 100644 --- a/ash/frame/custom_frame_view_ash.cc +++ b/ash/frame/custom_frame_view_ash.cc @@ -14,6 +14,7 @@ #include "ash/frame/header_painter.h" #include "ash/session_state_delegate.h" #include "ash/shell.h" +#include "ash/shell_observer.h" #include "ash/wm/immersive_fullscreen_controller.h" #include "ash/wm/window_state.h" #include "ash/wm/window_state_delegate.h" @@ -130,7 +131,8 @@ namespace ash { class CustomFrameViewAsh::HeaderView : public views::View, public ImmersiveFullscreenController::Delegate, - public FrameMaximizeButtonObserver { + public FrameMaximizeButtonObserver, + public ShellObserver { public: // |frame| is the widget that the caption buttons act on. explicit HeaderView(views::Widget* frame); @@ -153,10 +155,14 @@ class CustomFrameViewAsh::HeaderView void UpdateAvatarIcon(); - // views::View overrides: + // views::View: virtual void Layout() OVERRIDE; virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; + // ShellObserver: + virtual void OnMaximizeModeStarted() OVERRIDE; + virtual void OnMaximizeModeEnded() OVERRIDE; + FrameCaptionButtonContainerView* caption_button_container() { return caption_button_container_; } @@ -166,14 +172,14 @@ class CustomFrameViewAsh::HeaderView } private: - // ImmersiveFullscreenController::Delegate overrides: + // ImmersiveFullscreenController::Delegate: virtual void OnImmersiveRevealStarted() OVERRIDE; virtual void OnImmersiveRevealEnded() OVERRIDE; virtual void OnImmersiveFullscreenExited() OVERRIDE; virtual void SetVisibleFraction(double visible_fraction) OVERRIDE; virtual std::vector<gfx::Rect> GetVisibleBoundsInScreen() const OVERRIDE; - // FrameMaximizeButtonObserver overrides: + // FrameMaximizeButtonObserver: virtual void OnMaximizeBubbleShown(views::Widget* bubble) OVERRIDE; // The widget that the caption buttons act on. @@ -216,6 +222,8 @@ CustomFrameViewAsh::HeaderView::HeaderView(views::Widget* frame) FrameCaptionButtonContainerView::MINIMIZE_DISALLOWED; caption_button_container_ = new FrameCaptionButtonContainerView(frame_, minimize_allowed); + caption_button_container_->UpdateSizeButtonVisibility(Shell::GetInstance()-> + IsMaximizeModeWindowManagerEnabled()); AddChildView(caption_button_container_); FrameMaximizeButton* frame_maximize_button = caption_button_container_->GetOldStyleSizeButton(); @@ -224,6 +232,8 @@ CustomFrameViewAsh::HeaderView::HeaderView(views::Widget* frame) header_painter_->Init(frame_, this, NULL, caption_button_container_); UpdateAvatarIcon(); + + Shell::GetInstance()->AddShellObserver(this); } CustomFrameViewAsh::HeaderView::~HeaderView() { @@ -231,6 +241,7 @@ CustomFrameViewAsh::HeaderView::~HeaderView() { caption_button_container_->GetOldStyleSizeButton(); if (frame_maximize_button) frame_maximize_button->RemoveObserver(this); + Shell::GetInstance()->RemoveShellObserver(this); } void CustomFrameViewAsh::HeaderView::SchedulePaintForTitle() { @@ -284,6 +295,9 @@ void CustomFrameViewAsh::HeaderView::UpdateAvatarIcon() { Layout(); } +/////////////////////////////////////////////////////////////////////////////// +// CustomFrameViewAsh::HeaderView, views::View overrides: + void CustomFrameViewAsh::HeaderView::Layout() { header_painter_->LayoutHeader(); } @@ -298,6 +312,23 @@ void CustomFrameViewAsh::HeaderView::OnPaint(gfx::Canvas* canvas) { header_painter_->PaintHeader(canvas, header_mode); } +/////////////////////////////////////////////////////////////////////////////// +// CustomFrameViewAsh::HeaderView, ShellObserver overrides: + +void CustomFrameViewAsh::HeaderView::OnMaximizeModeStarted() { + caption_button_container_->UpdateSizeButtonVisibility(true); + parent()->Layout(); +} + +void CustomFrameViewAsh::HeaderView::OnMaximizeModeEnded() { + caption_button_container_->UpdateSizeButtonVisibility(false); + parent()->Layout(); +} + +/////////////////////////////////////////////////////////////////////////////// +// CustomFrameViewAsh::HeaderView, +// ImmersiveFullscreenController::Delegate overrides: + void CustomFrameViewAsh::HeaderView::OnImmersiveRevealStarted() { fullscreen_visible_fraction_ = 0; SetPaintToLayer(true); @@ -341,6 +372,9 @@ CustomFrameViewAsh::HeaderView::GetVisibleBoundsInScreen() const { return bounds_in_screen; } +/////////////////////////////////////////////////////////////////////////////// +// CustomFrameViewAsh::HeaderView, FrameMaximizeButtonObserver overrides: + void CustomFrameViewAsh::HeaderView::OnMaximizeBubbleShown( views::Widget* bubble) { maximize_bubble_ = bubble; @@ -377,6 +411,9 @@ CustomFrameViewAsh::OverlayView::OverlayView(HeaderView* header_view) CustomFrameViewAsh::OverlayView::~OverlayView() { } +/////////////////////////////////////////////////////////////////////////////// +// CustomFrameViewAsh::OverlayView, views::View overrides: + void CustomFrameViewAsh::OverlayView::Layout() { // Layout |header_view_| because layout affects the result of // GetPreferredOnScreenHeight(). @@ -538,6 +575,11 @@ const views::View* CustomFrameViewAsh::GetAvatarIconViewForTest() const { //////////////////////////////////////////////////////////////////////////////// // CustomFrameViewAsh, private: +FrameCaptionButtonContainerView* CustomFrameViewAsh:: + GetFrameCaptionButtonContainerViewForTest() { + return header_view_->caption_button_container(); +} + int CustomFrameViewAsh::NonClientTopBorderHeight() const { return frame_->IsFullscreen() ? 0 : header_view_->GetPreferredHeight(); } |