Index: ash/wm/panel_frame_view.cc |
diff --git a/ash/wm/panel_frame_view.cc b/ash/wm/panel_frame_view.cc |
index 4ca949944e04c1fb4ed5d3dd96cadbc16d6ae131..52a53c5c56598c5901ce8503d8371dee66f57437 100644 |
--- a/ash/wm/panel_frame_view.cc |
+++ b/ash/wm/panel_frame_view.cc |
@@ -2,8 +2,9 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "ash/wm/frame_painter.h" |
#include "ash/wm/panel_frame_view.h" |
+ |
+#include "ash/wm/frame_painter.h" |
#include "grit/ash_resources.h" |
#include "grit/ui_strings.h" // Accessibility names |
#include "third_party/skia/include/core/SkPaint.h" |
@@ -22,8 +23,17 @@ |
namespace ash { |
-PanelFrameView::PanelFrameView(views::Widget* frame) |
- : frame_painter_(new FramePainter) { |
+PanelFrameView::PanelFrameView(views::Widget* frame, FrameType frame_type) { |
+ if (frame_type != FRAME_NONE) |
+ InitFramePainter(frame); |
+} |
+ |
+PanelFrameView::~PanelFrameView() { |
+} |
+ |
+void PanelFrameView::InitFramePainter(views::Widget* frame) { |
+ frame_painter_.reset(new FramePainter); |
+ |
close_button_ = new views::ImageButton(this); |
close_button_->SetAccessibleName( |
l10n_util::GetStringUTF16(IDS_APP_ACCNAME_CLOSE)); |
@@ -38,10 +48,9 @@ PanelFrameView::PanelFrameView(views::Widget* frame) |
FramePainter::SIZE_BUTTON_MINIMIZES); |
} |
-PanelFrameView::~PanelFrameView() { |
-} |
- |
void PanelFrameView::Layout() { |
+ if (!frame_painter_.get()) |
+ return; |
frame_painter_->LayoutHeader(this, true); |
} |
@@ -54,7 +63,7 @@ void PanelFrameView::UpdateWindowIcon() { |
} |
void PanelFrameView::UpdateWindowTitle() { |
- NOTIMPLEMENTED(); |
+ // TODO(stevenjb): Support titles for panels? |
} |
void PanelFrameView::GetWindowMask(const gfx::Size&, gfx::Path*) { |
@@ -62,10 +71,14 @@ void PanelFrameView::GetWindowMask(const gfx::Size&, gfx::Path*) { |
} |
int PanelFrameView::NonClientHitTest(const gfx::Point& point) { |
+ if (!frame_painter_.get()) |
+ return HTNOWHERE; |
return frame_painter_->NonClientHitTest(this, point); |
} |
void PanelFrameView::OnPaint(gfx::Canvas* canvas) { |
+ if (!frame_painter_.get()) |
+ return; |
bool paint_as_active = ShouldPaintAsActive(); |
int theme_image_id = paint_as_active ? IDR_AURA_WINDOW_HEADER_BASE_ACTIVE : |
IDR_AURA_WINDOW_HEADER_BASE_INACTIVE; |
@@ -79,6 +92,8 @@ void PanelFrameView::OnPaint(gfx::Canvas* canvas) { |
} |
gfx::Rect PanelFrameView::GetBoundsForClientView() const { |
+ if (!frame_painter_.get()) |
+ return bounds(); |
return frame_painter_->GetBoundsForClientView( |
close_button_->bounds().bottom(), |
bounds()); |
@@ -86,6 +101,8 @@ gfx::Rect PanelFrameView::GetBoundsForClientView() const { |
gfx::Rect PanelFrameView::GetWindowBoundsForClientBounds( |
const gfx::Rect& client_bounds) const { |
+ if (!frame_painter_.get()) |
+ return client_bounds; |
return frame_painter_->GetWindowBoundsForClientBounds( |
close_button_->bounds().bottom(), client_bounds); |
} |
@@ -94,6 +111,8 @@ void PanelFrameView::ButtonPressed(views::Button* sender, |
const ui::Event& event) { |
if (sender == close_button_) |
GetWidget()->Close(); |
+ if (sender == minimize_button_) |
+ GetWidget()->Minimize(); |
} |
} // namespace ash |