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

Unified Diff: ash/wm/header_painter.cc

Issue 148003003: Use white header for app windows part #2 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 months 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
Index: ash/wm/header_painter.cc
diff --git a/ash/wm/header_painter.cc b/ash/wm/header_painter.cc
index 2a5a237454b70891d17cbabea6a4083d28c3ae6a..983ea63c8ffbafdecce2493960b68824c0142aab 100644
--- a/ash/wm/header_painter.cc
+++ b/ash/wm/header_painter.cc
@@ -43,10 +43,16 @@ const int kTitleNoIconOffsetX = 8;
const SkColor kNonMaximizedWindowTitleTextColor = SkColorSetRGB(40, 40, 40);
// Color for the maximized window title text.
const SkColor kMaximizedWindowTitleTextColor = SK_ColorWHITE;
-// Size of header/content separator line below the header image.
+// Size of header/content separator line below the header image for non-browser
+// windows.
const int kHeaderContentSeparatorSize = 1;
-// Color of header bottom edge line.
-const SkColor kHeaderContentSeparatorColor = SkColorSetRGB(128, 128, 128);
+// Color of the active window header/content separator line for non-browser
+// windows.
+const SkColor kHeaderContentSeparatorColor = SkColorSetRGB(180, 180, 182);
+// Color of the inactive window header/content separator line for non-browser
+// windows.
+const SkColor kHeaderContentSeparatorInactiveColor =
+ SkColorSetRGB(150, 150, 152);
// In the pre-Ash era the web content area had a frame along the left edge, so
// user-generated theme images for the new tab page assume they are shifted
// right relative to the header. Now that we have removed the left edge frame
@@ -139,11 +145,6 @@ HeaderPainter::HeaderPainter()
window_icon_(NULL),
caption_button_container_(NULL),
header_height_(0),
- top_left_corner_(NULL),
- top_edge_(NULL),
- top_right_corner_(NULL),
- header_left_edge_(NULL),
- header_right_edge_(NULL),
previous_theme_frame_id_(0),
previous_theme_frame_overlay_id_(0),
crossfade_theme_frame_id_(0),
@@ -167,19 +168,6 @@ void HeaderPainter::Init(
header_view_ = header_view;
window_icon_ = window_icon;
caption_button_container_ = caption_button_container;
-
- // Window frame image parts.
- ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
- top_left_corner_ =
- rb.GetImageNamed(IDR_AURA_WINDOW_HEADER_SHADE_TOP_LEFT).ToImageSkia();
- top_edge_ =
- rb.GetImageNamed(IDR_AURA_WINDOW_HEADER_SHADE_TOP).ToImageSkia();
- top_right_corner_ =
- rb.GetImageNamed(IDR_AURA_WINDOW_HEADER_SHADE_TOP_RIGHT).ToImageSkia();
- header_left_edge_ =
- rb.GetImageNamed(IDR_AURA_WINDOW_HEADER_SHADE_LEFT).ToImageSkia();
- header_right_edge_ =
- rb.GetImageNamed(IDR_AURA_WINDOW_HEADER_SHADE_RIGHT).ToImageSkia();
}
// static
@@ -236,6 +224,7 @@ int HeaderPainter::GetThemeBackgroundXInset() const {
}
void HeaderPainter::PaintHeader(gfx::Canvas* canvas,
+ Mode mode,
int theme_frame_id,
int theme_frame_overlay_id) {
bool initial_paint = (previous_theme_frame_id_ == 0);
@@ -321,55 +310,20 @@ void HeaderPainter::PaintHeader(gfx::Canvas* canvas,
previous_theme_frame_id_ = theme_frame_id;
previous_theme_frame_overlay_id_ = theme_frame_overlay_id;
- // We don't need the extra lightness in the edges when the window is maximized
- // or fullscreen.
- if (frame_->IsMaximized() || frame_->IsFullscreen())
- return;
-
- // Draw the top corners and edge.
- int top_left_width = top_left_corner_->width();
- int top_left_height = top_left_corner_->height();
- canvas->DrawImageInt(*top_left_corner_,
- 0, 0, top_left_width, top_left_height,
- 0, 0, top_left_width, top_left_height,
- false);
- canvas->TileImageInt(*top_edge_,
- top_left_width,
- 0,
- header_view_->width() - top_left_width - top_right_corner_->width(),
- top_edge_->height());
- int top_right_height = top_right_corner_->height();
- canvas->DrawImageInt(*top_right_corner_,
- 0, 0,
- top_right_corner_->width(), top_right_height,
- header_view_->width() - top_right_corner_->width(), 0,
- top_right_corner_->width(), top_right_height,
- false);
-
- // Header left edge.
- int header_left_height = theme_frame->height() - top_left_height;
- canvas->TileImageInt(*header_left_edge_,
- 0, top_left_height,
- header_left_edge_->width(), header_left_height);
-
- // Header right edge.
- int header_right_height = theme_frame->height() - top_right_height;
- canvas->TileImageInt(*header_right_edge_,
- header_view_->width() - header_right_edge_->width(),
- top_right_height,
- header_right_edge_->width(),
- header_right_height);
-
- // We don't draw edges around the content area. Web content goes flush
- // to the edge of the window.
+ PaintBorder(canvas, mode);
}
-void HeaderPainter::PaintHeaderContentSeparator(gfx::Canvas* canvas) {
+void HeaderPainter::PaintHeaderContentSeparator(gfx::Canvas* canvas,
+ Mode mode) {
+ DCHECK_EQ(style_, STYLE_OTHER);
+ SkColor color = (mode == MODE_ACTIVE) ?
+ kHeaderContentSeparatorColor :
+ kHeaderContentSeparatorInactiveColor;
canvas->FillRect(gfx::Rect(0,
header_height_ - kHeaderContentSeparatorSize,
header_view_->width(),
kHeaderContentSeparatorSize),
- kHeaderContentSeparatorColor);
+ color);
}
int HeaderPainter::HeaderContentSeparatorSize() const {
@@ -449,77 +403,194 @@ void HeaderPainter::AnimationProgressed(const gfx::Animation* animation) {
///////////////////////////////////////////////////////////////////////////////
// HeaderPainter, private:
+void HeaderPainter::PaintBorder(gfx::Canvas* canvas, Mode mode) {
+ if (frame_->IsMaximized() ||
+ frame_->IsFullscreen() ||
+ (style_ == STYLE_OTHER && mode == MODE_ACTIVE)) {
+ return;
+ }
+
+ gfx::ImageSkia top_left_corner;
+ gfx::ImageSkia top_right_corner;
+ gfx::ImageSkia top_edge;
+ gfx::ImageSkia left_edge;
+ gfx::ImageSkia right_edge;
+ gfx::ImageSkia bottom_edge;
+
+ ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
+ if (style_ == STYLE_BROWSER) {
+ top_left_corner = *rb.GetImageSkiaNamed(
+ IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_TOP_LEFT);
+ top_right_corner = *rb.GetImageSkiaNamed(
+ IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_TOP_RIGHT);
+ top_edge = *rb.GetImageSkiaNamed(IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_TOP);
+ left_edge = *rb.GetImageSkiaNamed(
+ IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_LEFT);
+ right_edge = *rb.GetImageSkiaNamed(
+ IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_RIGHT);
+ } else {
+ top_edge = *rb.GetImageSkiaNamed(
+ IDR_AURA_WINDOW_HEADER_SHADE_INACTIVE_TOP);
+ left_edge = *rb.GetImageSkiaNamed(
+ IDR_AURA_WINDOW_HEADER_SHADE_INACTIVE_LEFT);
+ right_edge = *rb.GetImageSkiaNamed(
+ IDR_AURA_WINDOW_HEADER_SHADE_INACTIVE_RIGHT);
+ bottom_edge = *rb.GetImageSkiaNamed(
+ IDR_AURA_WINDOW_HEADER_SHADE_INACTIVE_BOTTOM);
+ }
+
+ int top_left_width = top_left_corner.width();
+ int top_left_height = top_left_corner.height();
+ if (!top_left_corner.isNull()) {
+ canvas->DrawImageInt(top_left_corner,
+ 0, 0, top_left_width, top_left_height,
+ 0, 0, top_left_width, top_left_height,
+ false);
+ }
+
+ int top_right_height = top_right_corner.height();
+ if (!top_right_corner.isNull()) {
+ canvas->DrawImageInt(top_right_corner,
+ 0, 0,
+ top_right_corner.width(), top_right_height,
+ header_view_->width() - top_right_corner.width(), 0,
+ top_right_corner.width(), top_right_height,
+ false);
+ }
+
+ if (!top_edge.isNull()) {
James Cook 2014/02/03 18:46:35 There's always a top_edge, right?
+ canvas->TileImageInt(top_edge,
+ top_left_width,
+ 0,
+ header_view_->width() - top_left_width - top_right_corner.width(),
+ top_edge.height());
+ }
+
+ int bottom_height = bottom_edge.height();
+ if (!bottom_edge.isNull()) {
+ canvas->TileImageInt(bottom_edge,
+ 0, header_height_ - bottom_height,
+ header_view_->width(), bottom_edge.height());
+ }
+
+ int left_edge_height = header_height_ - top_left_height - bottom_height;
+ if (!left_edge.isNull()) {
James Cook 2014/02/03 18:46:35 ditto
+ canvas->TileImageInt(left_edge,
+ 0, top_left_height,
+ left_edge.width(), left_edge_height);
+ }
+
+ int right_edge_height = header_height_ - top_right_height - bottom_height;
+ if (!right_edge.isNull()) {
James Cook 2014/02/03 18:46:35 ditto
+ canvas->TileImageInt(right_edge,
+ header_view_->width() - right_edge.width(),
+ top_right_height,
+ right_edge.width(),
+ right_edge_height);
+ }
+}
+
void HeaderPainter::UpdateCaptionButtonImages() {
- if (frame_->IsMaximized() || frame_->IsFullscreen()) {
- caption_button_container_->SetButtonImages(
- CAPTION_BUTTON_ICON_MAXIMIZE_RESTORE,
- IDR_AURA_WINDOW_MAXIMIZED_RESTORE2,
- IDR_AURA_WINDOW_MAXIMIZED_RESTORE2_H,
- IDR_AURA_WINDOW_MAXIMIZED_RESTORE2_P);
- caption_button_container_->SetButtonImages(
- CAPTION_BUTTON_ICON_CLOSE,
- IDR_AURA_WINDOW_MAXIMIZED_CLOSE2,
- IDR_AURA_WINDOW_MAXIMIZED_CLOSE2_H,
- IDR_AURA_WINDOW_MAXIMIZED_CLOSE2_P);
- caption_button_container_->SetButtonImages(
- CAPTION_BUTTON_ICON_LEFT_SNAPPED,
- IDR_AURA_WINDOW_MAXIMIZED_RESTORE2,
- IDR_AURA_WINDOW_MAXIMIZED_RESTORE2_H,
- IDR_AURA_WINDOW_MAXIMIZED_RESTORE2_P);
- caption_button_container_->SetButtonImages(
- CAPTION_BUTTON_ICON_RIGHT_SNAPPED,
- IDR_AURA_WINDOW_MAXIMIZED_RESTORE2,
- IDR_AURA_WINDOW_MAXIMIZED_RESTORE2_H,
- IDR_AURA_WINDOW_MAXIMIZED_RESTORE2_P);
- } else if (style_ == STYLE_BROWSER) {
- caption_button_container_->SetButtonImages(
- CAPTION_BUTTON_ICON_MAXIMIZE_RESTORE,
- IDR_AURA_WINDOW_MAXIMIZE,
- IDR_AURA_WINDOW_MAXIMIZE_H,
- IDR_AURA_WINDOW_MAXIMIZE_P);
- caption_button_container_->SetButtonImages(
- CAPTION_BUTTON_ICON_CLOSE,
- IDR_AURA_WINDOW_CLOSE,
- IDR_AURA_WINDOW_CLOSE_H,
- IDR_AURA_WINDOW_CLOSE_P);
- caption_button_container_->SetButtonImages(
- CAPTION_BUTTON_ICON_LEFT_SNAPPED,
- IDR_AURA_WINDOW_MAXIMIZE,
- IDR_AURA_WINDOW_MAXIMIZE_H,
- IDR_AURA_WINDOW_MAXIMIZE_P);
- caption_button_container_->SetButtonImages(
- CAPTION_BUTTON_ICON_RIGHT_SNAPPED,
- IDR_AURA_WINDOW_MAXIMIZE,
- IDR_AURA_WINDOW_MAXIMIZE_H,
- IDR_AURA_WINDOW_MAXIMIZE_P);
+ if (style_ == STYLE_BROWSER) {
+ if (frame_->IsMaximized() || frame_->IsFullscreen()) {
+ caption_button_container_->SetButtonImages(
+ CAPTION_BUTTON_ICON_MINIMIZE,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_MINIMIZE,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_MINIMIZE,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_H,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_P);
+ caption_button_container_->SetButtonImages(
+ CAPTION_BUTTON_ICON_MAXIMIZE_RESTORE,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_SIZE,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_SIZE,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_H,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_P);
+ caption_button_container_->SetButtonImages(
+ CAPTION_BUTTON_ICON_CLOSE,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_CLOSE,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_CLOSE,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_H,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_P);
+ caption_button_container_->SetButtonImages(
+ CAPTION_BUTTON_ICON_LEFT_SNAPPED,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_LEFT_SNAPPED,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_LEFT_SNAPPED,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_H,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_P);
+ caption_button_container_->SetButtonImages(
+ CAPTION_BUTTON_ICON_RIGHT_SNAPPED,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_RIGHT_SNAPPED,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_MAXIMIZED_RIGHT_SNAPPED,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_H,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_MAXIMIZED_P);
+ } else {
+ caption_button_container_->SetButtonImages(
+ CAPTION_BUTTON_ICON_MINIMIZE,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_MINIMIZE,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_MINIMIZE,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_H,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_P);
+ caption_button_container_->SetButtonImages(
+ CAPTION_BUTTON_ICON_MAXIMIZE_RESTORE,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_SIZE,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_SIZE,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_H,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_P);
+ caption_button_container_->SetButtonImages(
+ CAPTION_BUTTON_ICON_CLOSE,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_CLOSE,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_CLOSE,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_H,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_P);
+ caption_button_container_->SetButtonImages(
+ CAPTION_BUTTON_ICON_LEFT_SNAPPED,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_LEFT_SNAPPED,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_LEFT_SNAPPED,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_H,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_P);
+ caption_button_container_->SetButtonImages(
+ CAPTION_BUTTON_ICON_RIGHT_SNAPPED,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_RIGHT_SNAPPED,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_ICON_RESTORED_RIGHT_SNAPPED,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_H,
+ IDR_AURA_BROWSER_WINDOW_CONTROL_BACKGROUND_RESTORED_P);
+ }
} else {
caption_button_container_->SetButtonImages(
+ CAPTION_BUTTON_ICON_MINIMIZE,
+ IDR_AURA_WINDOW_CONTROL_ICON_MINIMIZE,
+ IDR_AURA_WINDOW_CONTROL_ICON_MINIMIZE_I,
+ IDR_AURA_WINDOW_CONTROL_BACKGROUND_H,
+ IDR_AURA_WINDOW_CONTROL_BACKGROUND_P);
+ caption_button_container_->SetButtonImages(
CAPTION_BUTTON_ICON_MAXIMIZE_RESTORE,
- IDR_AURA_WINDOW_MAXIMIZED_RESTORE,
- IDR_AURA_WINDOW_MAXIMIZED_RESTORE_H,
- IDR_AURA_WINDOW_MAXIMIZED_RESTORE_P);
+ IDR_AURA_WINDOW_CONTROL_ICON_SIZE,
+ IDR_AURA_WINDOW_CONTROL_ICON_SIZE_I,
+ IDR_AURA_WINDOW_CONTROL_BACKGROUND_H,
+ IDR_AURA_WINDOW_CONTROL_BACKGROUND_P);
caption_button_container_->SetButtonImages(
CAPTION_BUTTON_ICON_CLOSE,
- IDR_AURA_WINDOW_MAXIMIZED_CLOSE,
- IDR_AURA_WINDOW_MAXIMIZED_CLOSE_H,
- IDR_AURA_WINDOW_MAXIMIZED_CLOSE_P);
+ IDR_AURA_WINDOW_CONTROL_ICON_CLOSE,
+ IDR_AURA_WINDOW_CONTROL_ICON_CLOSE_I,
+ IDR_AURA_WINDOW_CONTROL_BACKGROUND_H,
+ IDR_AURA_WINDOW_CONTROL_BACKGROUND_P);
+
+ // There is no dedicated icon for the snap-left and snap-right buttons
+ // when |frame_| is inactive because they should never be visible while
+ // |frame_| is inactive.
caption_button_container_->SetButtonImages(
CAPTION_BUTTON_ICON_LEFT_SNAPPED,
- IDR_AURA_WINDOW_MAXIMIZED_RESTORE,
- IDR_AURA_WINDOW_MAXIMIZED_RESTORE_H,
- IDR_AURA_WINDOW_MAXIMIZED_RESTORE_P);
+ IDR_AURA_WINDOW_CONTROL_ICON_LEFT_SNAPPED,
+ IDR_AURA_WINDOW_CONTROL_ICON_LEFT_SNAPPED,
+ IDR_AURA_WINDOW_CONTROL_BACKGROUND_H,
+ IDR_AURA_WINDOW_CONTROL_BACKGROUND_P);
caption_button_container_->SetButtonImages(
CAPTION_BUTTON_ICON_RIGHT_SNAPPED,
- IDR_AURA_WINDOW_MAXIMIZED_RESTORE,
- IDR_AURA_WINDOW_MAXIMIZED_RESTORE_H,
- IDR_AURA_WINDOW_MAXIMIZED_RESTORE_P);
+ IDR_AURA_WINDOW_CONTROL_ICON_RIGHT_SNAPPED,
+ IDR_AURA_WINDOW_CONTROL_ICON_RIGHT_SNAPPED,
+ IDR_AURA_WINDOW_CONTROL_BACKGROUND_H,
+ IDR_AURA_WINDOW_CONTROL_BACKGROUND_P);
}
-
- caption_button_container_->SetButtonImages(
- CAPTION_BUTTON_ICON_MINIMIZE,
- IDR_AURA_WINDOW_MINIMIZE_SHORT,
- IDR_AURA_WINDOW_MINIMIZE_SHORT_H,
- IDR_AURA_WINDOW_MINIMIZE_SHORT_P);
}
gfx::Rect HeaderPainter::GetHeaderLocalBounds() const {

Powered by Google App Engine
This is Rietveld 408576698