Chromium Code Reviews| Index: chrome/browser/ui/views/frame/browser_non_client_frame_view_aura.cc |
| diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_aura.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_aura.cc |
| index f7ec48be8f9196fee26f31072f9c3431812ef65e..d30a7a885a81fcac2df817eddc46e518176858db 100644 |
| --- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_aura.cc |
| +++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_aura.cc |
| @@ -61,21 +61,31 @@ const int kContentShadowHeight = 1; |
| BrowserNonClientFrameViewAura::BrowserNonClientFrameViewAura( |
| BrowserFrame* frame, BrowserView* browser_view) |
| : BrowserNonClientFrameView(frame, browser_view), |
| - maximize_button_(NULL), |
| + size_button_(NULL), |
| close_button_(NULL), |
| window_icon_(NULL), |
| - frame_painter_(new ash::FramePainter) { |
| + frame_painter_(new ash::FramePainter), |
| + size_button_minimizes_(false) { |
|
James Cook
2012/03/31 00:15:09
nit: Maybe this could be size_button_behavior_?
|
| } |
| BrowserNonClientFrameViewAura::~BrowserNonClientFrameViewAura() { |
| } |
| void BrowserNonClientFrameViewAura::Init() { |
| - // Caption buttons. |
| - maximize_button_ = new ash::FrameMaximizeButton(this, this); |
| - maximize_button_->SetAccessibleName( |
| + // Panels only minimize. |
| + ash::FramePainter::SizeButtonBehavior size_button_behavior; |
| + if (browser_view()->browser()->is_type_panel() && |
| + browser_view()->browser()->app_type() == Browser::APP_TYPE_CHILD) { |
| + size_button_minimizes_ = true; |
| + size_button_ = new views::ImageButton(this); |
| + size_button_behavior = ash::FramePainter::SIZE_BUTTON_MINIMIZES; |
| + } else { |
| + size_button_ = new ash::FrameMaximizeButton(this, this); |
| + size_button_behavior = ash::FramePainter::SIZE_BUTTON_MAXIMIZES; |
| + } |
| + size_button_->SetAccessibleName( |
| l10n_util::GetStringUTF16(IDS_ACCNAME_MAXIMIZE)); |
| - AddChildView(maximize_button_); |
| + AddChildView(size_button_); |
| close_button_ = new views::ImageButton(this); |
| close_button_->SetAccessibleName( |
| l10n_util::GetStringUTF16(IDS_ACCNAME_CLOSE)); |
| @@ -93,7 +103,8 @@ void BrowserNonClientFrameViewAura::Init() { |
| UpdateAvatarInfo(); |
| // Frame painter handles layout of these buttons. |
| - frame_painter_->Init(frame(), window_icon_, maximize_button_, close_button_); |
| + frame_painter_->Init(frame(), window_icon_, size_button_, close_button_, |
| + size_button_behavior); |
| } |
| /////////////////////////////////////////////////////////////////////////////// |
| @@ -108,7 +119,7 @@ gfx::Rect BrowserNonClientFrameViewAura::GetBoundsForTabStrip( |
| (avatar_button()->bounds().right() + kAvatarSideSpacing) : |
| kTabstripLeftSpacing; |
| int tabstrip_width = |
| - maximize_button_->x() - kTabstripRightSpacing - tabstrip_x; |
| + size_button_->x() - kTabstripRightSpacing - tabstrip_x; |
| return gfx::Rect(tabstrip_x, |
| GetHorizontalTabStripVerticalOffset(false), |
| std::max(0, tabstrip_width), |
| @@ -162,7 +173,7 @@ void BrowserNonClientFrameViewAura::GetWindowMask(const gfx::Size& size, |
| } |
| void BrowserNonClientFrameViewAura::ResetWindowControls() { |
| - maximize_button_->SetState(views::CustomButton::BS_NORMAL); |
| + size_button_->SetState(views::CustomButton::BS_NORMAL); |
| // The close button isn't affected by this constraint. |
| } |
| @@ -241,10 +252,12 @@ gfx::Size BrowserNonClientFrameViewAura::GetMinimumSize() { |
| void BrowserNonClientFrameViewAura::ButtonPressed(views::Button* sender, |
| const views::Event& event) { |
| - if (sender == maximize_button_) { |
| + if (sender == size_button_) { |
| // The maximize button may move out from under the cursor. |
| ResetWindowControls(); |
| - if (frame()->IsMaximized()) |
| + if (size_button_minimizes_) |
| + frame()->Minimize(); |
| + else if (frame()->IsMaximized()) |
| frame()->Restore(); |
| else |
| frame()->Maximize(); |