Index: ash/frame/header_painter.cc |
diff --git a/ash/frame/header_painter.cc b/ash/frame/header_painter.cc |
index 6e18d95de6b28edd8fc1af0d26b47e7da9e6e209..4a9195f7242a14c072f8609fb7c2e8d597a4886e 100644 |
--- a/ash/frame/header_painter.cc |
+++ b/ash/frame/header_painter.cc |
@@ -39,10 +39,12 @@ const int kTitleLogoSpacing = 5; |
const int kTitleIconOffsetX = 5; |
// Space between window edge and title text, when there is no icon. |
const int kTitleNoIconOffsetX = 8; |
-// Color for the non-maximized window title text. |
-const SkColor kNonMaximizedWindowTitleTextColor = SkColorSetRGB(40, 40, 40); |
-// Color for the maximized window title text. |
-const SkColor kMaximizedWindowTitleTextColor = SK_ColorWHITE; |
+// Color for the non-browser window title text. |
+const SkColor kWindowTitleTextColor = SkColorSetRGB(40, 40, 40); |
+// Color for the restored browser window title text. |
+const SkColor kRestoredBrowserWindowTitleTextColor = SkColorSetRGB(40, 40, 40); |
+// Color for the maximized browser window title text. |
+const SkColor kMaximizedBrowserWindowTitleTextColor = SK_ColorWHITE; |
// Size of header/content separator line below the header image for non-browser |
// windows. |
const int kHeaderContentSeparatorSize = 1; |
@@ -308,7 +310,14 @@ void HeaderPainter::PaintHeader(gfx::Canvas* canvas, |
previous_theme_frame_id_ = theme_frame_id; |
previous_theme_frame_overlay_id_ = theme_frame_overlay_id; |
- PaintBorder(canvas, mode); |
+ if (!frame_->IsMaximized() && !frame_->IsFullscreen()) { |
+ if (style_ == STYLE_BROWSER) { |
+ PaintHighlightForRestoredBrowserWindow(canvas); |
+ } else { |
+ if (mode == MODE_INACTIVE) |
+ PaintHighlightForInactiveRestoredWindow(canvas); |
+ } |
+ } |
} |
void HeaderPainter::PaintHeaderContentSeparator(gfx::Canvas* canvas, |
@@ -336,8 +345,12 @@ void HeaderPainter::PaintTitleBar(gfx::Canvas* canvas, |
if (delegate && delegate->ShouldShowWindowTitle()) { |
gfx::Rect title_bounds = GetTitleBounds(title_font_list); |
title_bounds.set_x(header_view_->GetMirroredXForRect(title_bounds)); |
- SkColor title_color = (frame_->IsMaximized() || frame_->IsFullscreen()) ? |
- kMaximizedWindowTitleTextColor : kNonMaximizedWindowTitleTextColor; |
+ SkColor title_color = kWindowTitleTextColor; |
+ if (style_ == STYLE_BROWSER) { |
+ title_color = (frame_->IsMaximized() || frame_->IsFullscreen()) ? |
+ kMaximizedBrowserWindowTitleTextColor : |
+ kRestoredBrowserWindowTitleTextColor; |
+ } |
canvas->DrawStringRectWithFlags(delegate->GetWindowTitle(), |
title_font_list, |
title_color, |
@@ -402,86 +415,82 @@ 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; |
- |
+void HeaderPainter::PaintHighlightForRestoredBrowserWindow( |
+ gfx::Canvas* canvas) { |
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); |
- } |
- |
- DCHECK(!top_edge.isNull()); |
- DCHECK(!left_edge.isNull()); |
- DCHECK(!right_edge.isNull()); |
+ gfx::ImageSkia top_left_corner = *rb.GetImageSkiaNamed( |
+ IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_TOP_LEFT); |
+ gfx::ImageSkia top_right_corner = *rb.GetImageSkiaNamed( |
+ IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_TOP_RIGHT); |
+ gfx::ImageSkia top_edge = *rb.GetImageSkiaNamed( |
+ IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_TOP); |
+ gfx::ImageSkia left_edge = *rb.GetImageSkiaNamed( |
+ IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_LEFT); |
+ gfx::ImageSkia right_edge = *rb.GetImageSkiaNamed( |
+ IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_RIGHT); |
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); |
- } |
+ canvas->DrawImageInt(top_left_corner, 0, 0); |
+ int top_right_width = top_right_corner.width(); |
int top_right_height = top_right_corner.height(); |
- if (!top_right_corner.isNull()) { |
- canvas->DrawImageInt(top_right_corner, |
- header_view_->width() - top_right_corner.width(), |
- top_right_height); |
- } |
+ canvas->DrawImageInt(top_right_corner, |
+ header_view_->width() - top_right_width, |
+ 0); |
- canvas->TileImageInt(top_edge, |
+ canvas->TileImageInt( |
+ top_edge, |
top_left_width, |
0, |
- header_view_->width() - top_left_width - top_right_corner.width(), |
+ header_view_->width() - top_left_width - top_right_width, |
top_edge.height()); |
- // TODO(pkotwicz): Compute |bottom| more accurately. The computation is |
- // inaccurate for browser windows. |
- int bottom = header_height_ - kHeaderContentSeparatorSize; |
- int bottom_height = bottom_edge.height(); |
- if (!bottom_edge.isNull()) { |
- canvas->TileImageInt(bottom_edge, |
- 0, bottom - bottom_height, |
- header_view_->width(), bottom_height); |
- } |
- |
- int left_edge_height = bottom - bottom_height - top_left_height; |
canvas->TileImageInt(left_edge, |
- 0, top_left_height, |
- left_edge.width(), left_edge_height); |
+ 0, |
+ top_left_height, |
+ left_edge.width(), |
+ header_height_ - top_left_height); |
- int right_edge_height = bottom - bottom_height - top_right_height; |
canvas->TileImageInt(right_edge, |
header_view_->width() - right_edge.width(), |
top_right_height, |
right_edge.width(), |
- right_edge_height); |
+ header_height_ - top_right_height); |
+} |
+ |
+void HeaderPainter::PaintHighlightForInactiveRestoredWindow( |
+ gfx::Canvas* canvas) { |
+ ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
+ gfx::ImageSkia top_edge = *rb.GetImageSkiaNamed( |
+ IDR_AURA_WINDOW_HEADER_SHADE_INACTIVE_TOP); |
+ gfx::ImageSkia left_edge = *rb.GetImageSkiaNamed( |
+ IDR_AURA_WINDOW_HEADER_SHADE_INACTIVE_LEFT); |
+ gfx::ImageSkia right_edge = *rb.GetImageSkiaNamed( |
+ IDR_AURA_WINDOW_HEADER_SHADE_INACTIVE_RIGHT); |
+ gfx::ImageSkia bottom_edge = *rb.GetImageSkiaNamed( |
+ IDR_AURA_WINDOW_HEADER_SHADE_INACTIVE_BOTTOM); |
+ |
+ int left_edge_width = left_edge.width(); |
+ int right_edge_width = right_edge.width(); |
+ canvas->DrawImageInt(left_edge, 0, 0); |
+ canvas->DrawImageInt(right_edge, header_view_->width() - right_edge_width, 0); |
+ canvas->TileImageInt( |
+ top_edge, |
+ left_edge_width, |
+ 0, |
+ header_view_->width() - left_edge_width - right_edge_width, |
+ top_edge.height()); |
+ |
+ DCHECK_EQ(left_edge.height(), right_edge.height()); |
+ int bottom = left_edge.height(); |
+ int bottom_height = bottom_edge.height(); |
+ canvas->TileImageInt( |
+ bottom_edge, |
+ left_edge_width, |
+ bottom - bottom_height, |
+ header_view_->width() - left_edge_width - right_edge_width, |
+ bottom_height); |
} |
void HeaderPainter::UpdateCaptionButtonImages() { |