Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(239)

Unified Diff: ash/wm/panel_frame_view.cc

Issue 11363250: Allow Chrome apps to create Ash Panels (apps v2) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix mac and win builds Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/wm/panel_frame_view.h ('k') | ash/wm/panel_layout_manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « ash/wm/panel_frame_view.h ('k') | ash/wm/panel_layout_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698