| Index: ash/wm/header_painter.cc
|
| diff --git a/ash/wm/header_painter.cc b/ash/wm/header_painter.cc
|
| index 3f4d17ee494e0eacfb0eddcda601b0cbb81559b2..f6fdfafb45429a993fc130f0b2bef32bfbfc1662 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_BROWSER_WINDOW_HEADER_SHADE_TOP_LEFT).ToImageSkia();
|
| - top_edge_ = rb.GetImageNamed(
|
| - IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_TOP).ToImageSkia();
|
| - top_right_corner_ = rb.GetImageNamed(
|
| - IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_TOP_RIGHT).ToImageSkia();
|
| - header_left_edge_ = rb.GetImageNamed(
|
| - IDR_AURA_BROWSER_WINDOW_HEADER_SHADE_LEFT).ToImageSkia();
|
| - header_right_edge_ = rb.GetImageNamed(
|
| - IDR_AURA_BROWSER_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,21 @@ 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 +404,189 @@ 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);
|
| + }
|
| +
|
| + DCHECK(!top_edge.isNull());
|
| + DCHECK(!left_edge.isNull());
|
| + DCHECK(!right_edge.isNull());
|
| +
|
| + 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);
|
| + }
|
| +
|
| + 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->TileImageInt(top_edge,
|
| + top_left_width,
|
| + 0,
|
| + header_view_->width() - top_left_width - top_right_corner.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);
|
| +
|
| + 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);
|
| +}
|
| +
|
| 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 {
|
|
|