| Index: chrome/browser/ui/views/frame/browser_non_client_frame_view_aura.cc
|
| ===================================================================
|
| --- chrome/browser/ui/views/frame/browser_non_client_frame_view_aura.cc (revision 130125)
|
| +++ chrome/browser/ui/views/frame/browser_non_client_frame_view_aura.cc (working copy)
|
| @@ -61,21 +61,31 @@
|
| 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) {
|
| }
|
|
|
| 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 @@
|
| 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 @@
|
| (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::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 @@
|
|
|
| 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();
|
|
|