summaryrefslogtreecommitdiffstats
path: root/ash/frame/custom_frame_view_ash.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ash/frame/custom_frame_view_ash.cc')
-rw-r--r--ash/frame/custom_frame_view_ash.cc50
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();
}