Index: chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc |
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc |
index 6f75116b5eff8d6f3a1977dd4c5091f7fbd7bd12..8ca9008feb7f870d6ecb79a713e551fc55330dca 100644 |
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc |
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc |
@@ -243,20 +243,19 @@ void BrowserNonClientFrameViewAsh::OnPaint(gfx::Canvas* canvas) { |
return; |
} |
+ caption_button_container_->SetPaintAsActive(ShouldPaintAsActive()); |
+ |
// The primary header image changes based on window activation state and |
// theme, so we look it up for each paint. |
- int theme_frame_image_id = GetThemeFrameImageId(); |
- int theme_frame_overlay_image_id = GetThemeFrameOverlayImageId(); |
+ int theme_frame_image_id = 0; |
+ int theme_frame_overlay_image_id = 0; |
+ GetFrameImageIds(&theme_frame_image_id, &theme_frame_overlay_image_id); |
- ui::ThemeProvider* theme_provider = GetThemeProvider(); |
- if (!theme_provider->HasCustomImage(theme_frame_image_id) && |
- (theme_frame_overlay_image_id == 0 || |
- !theme_provider->HasCustomImage(theme_frame_overlay_image_id))) { |
- if (frame()->IsMaximized() || frame()->IsFullscreen()) |
- theme_frame_image_id = IDR_AURA_WINDOW_HEADER_BASE_MINIMAL; |
- } |
+ ash::HeaderPainter::Mode header_mode = ShouldPaintAsActive() ? |
+ ash::HeaderPainter::MODE_ACTIVE : ash::HeaderPainter::MODE_INACTIVE; |
header_painter_->PaintHeader( |
canvas, |
+ header_mode, |
theme_frame_image_id, |
theme_frame_overlay_image_id); |
if (browser_view()->ShouldShowWindowTitle()) |
@@ -436,7 +435,7 @@ void BrowserNonClientFrameViewAsh::PaintImmersiveLightbarStyleHeader( |
gfx::Canvas* canvas) { |
// The light bar header is not themed because theming it does not look good. |
gfx::ImageSkia* frame_image = GetThemeProvider()->GetImageSkiaNamed( |
- IDR_AURA_WINDOW_HEADER_BASE_MINIMAL); |
+ IDR_AURA_BROWSER_WINDOW_HEADER_BASE_MAXIMIZED); |
canvas->TileImageInt(*frame_image, 0, 0, width(), frame_image->height()); |
} |
@@ -516,7 +515,9 @@ void BrowserNonClientFrameViewAsh::PaintToolbarBackground(gfx::Canvas* canvas) { |
void BrowserNonClientFrameViewAsh::PaintContentEdge(gfx::Canvas* canvas) { |
if (UsePackagedAppHeaderStyle()) { |
- header_painter_->PaintHeaderContentSeparator(canvas); |
+ ash::HeaderPainter::Mode header_mode = ShouldPaintAsActive() ? |
+ ash::HeaderPainter::MODE_ACTIVE : ash::HeaderPainter::MODE_INACTIVE; |
+ header_painter_->PaintHeaderContentSeparator(canvas, header_mode); |
} else { |
canvas->FillRect(gfx::Rect(0, caption_button_container_->bounds().bottom(), |
width(), kClientEdgeThickness), |
@@ -525,35 +526,52 @@ void BrowserNonClientFrameViewAsh::PaintContentEdge(gfx::Canvas* canvas) { |
} |
} |
-int BrowserNonClientFrameViewAsh::GetThemeFrameImageId() const { |
+void BrowserNonClientFrameViewAsh::GetFrameImageIds( |
James Cook
2014/02/03 18:46:35
This function is long and complex. I suggest break
|
+ int* frame_image_id, |
+ int* frame_overlay_image_id) const { |
+ *frame_overlay_image_id = 0; |
+ |
bool is_incognito = !browser_view()->IsRegularOrGuestSession(); |
if (browser_view()->IsBrowserTypeNormal()) { |
- // Use the standard resource ids to allow users to theme the frames. |
+ // Tabbed browser windows. |
+ ui::ThemeProvider* tp = GetThemeProvider(); |
+ if (tp->HasCustomImage(IDR_THEME_FRAME_OVERLAY) && |
+ !is_incognito) { |
+ *frame_overlay_image_id = ShouldPaintAsActive() ? |
+ IDR_THEME_FRAME_OVERLAY : IDR_THEME_FRAME_OVERLAY_INACTIVE; |
+ } |
+ |
if (ShouldPaintAsActive()) { |
- return is_incognito ? |
+ *frame_image_id = is_incognito ? |
IDR_THEME_FRAME_INCOGNITO : IDR_THEME_FRAME; |
+ } else { |
+ *frame_image_id = is_incognito ? |
+ IDR_THEME_FRAME_INCOGNITO_INACTIVE : IDR_THEME_FRAME_INACTIVE; |
} |
- return is_incognito ? |
- IDR_THEME_FRAME_INCOGNITO_INACTIVE : IDR_THEME_FRAME_INACTIVE; |
- } |
- // Never theme app and popup windows. |
- if (ShouldPaintAsActive()) { |
- return is_incognito ? |
- IDR_AURA_WINDOW_HEADER_BASE_INCOGNITO_ACTIVE : |
- IDR_AURA_WINDOW_HEADER_BASE_ACTIVE; |
- } |
- return is_incognito ? |
- IDR_AURA_WINDOW_HEADER_BASE_INCOGNITO_INACTIVE : |
- IDR_AURA_WINDOW_HEADER_BASE_INACTIVE; |
-} |
-int BrowserNonClientFrameViewAsh::GetThemeFrameOverlayImageId() const { |
- ui::ThemeProvider* tp = GetThemeProvider(); |
- if (tp->HasCustomImage(IDR_THEME_FRAME_OVERLAY) && |
- browser_view()->IsBrowserTypeNormal() && |
- !browser_view()->IsOffTheRecord()) { |
- return ShouldPaintAsActive() ? |
- IDR_THEME_FRAME_OVERLAY : IDR_THEME_FRAME_OVERLAY_INACTIVE; |
+ if ((frame()->IsMaximized() || frame()->IsFullscreen()) && |
+ !tp->HasCustomImage(IDR_THEME_FRAME) && |
+ !tp->HasCustomImage(*frame_image_id) && |
+ *frame_overlay_image_id == 0) { |
+ *frame_image_id = IDR_AURA_BROWSER_WINDOW_HEADER_BASE_MAXIMIZED; |
+ } |
+ } else if (UsePackagedAppHeaderStyle()) { |
+ // Apps are not themeable. |
+ *frame_image_id = ShouldPaintAsActive() ? |
+ IDR_AURA_WINDOW_HEADER_BASE_ACTIVE : |
+ IDR_AURA_WINDOW_HEADER_BASE_INACTIVE; |
+ } else { |
+ // Browser popups are not themeable. |
+ if (frame()->IsMaximized() || frame()->IsFullscreen()) { |
+ *frame_image_id = IDR_AURA_BROWSER_WINDOW_HEADER_BASE_MAXIMIZED; |
+ } else if (ShouldPaintAsActive()) { |
+ *frame_image_id = is_incognito ? |
+ IDR_AURA_BROWSER_WINDOW_HEADER_BASE_RESTORED_INCOGNITO_ACTIVE : |
+ IDR_AURA_BROWSER_WINDOW_HEADER_BASE_RESTORED_ACTIVE; |
+ } else { |
+ *frame_image_id = is_incognito ? |
+ IDR_AURA_BROWSER_WINDOW_HEADER_BASE_RESTORED_INCOGNITO_INACTIVE : |
+ IDR_AURA_BROWSER_WINDOW_HEADER_BASE_RESTORED_INACTIVE; |
+ } |
} |
- return 0; |
} |