Index: chrome/browser/ui/views/tabs/tab.cc |
diff --git a/chrome/browser/ui/views/tabs/tab.cc b/chrome/browser/ui/views/tabs/tab.cc |
index ba7f628ea4eb6b8b5ee1a183928544c7910245e5..a94ac04a772b0c3f25bf929388da1f9c49144fac 100644 |
--- a/chrome/browser/ui/views/tabs/tab.cc |
+++ b/chrome/browser/ui/views/tabs/tab.cc |
@@ -1143,13 +1143,13 @@ void Tab::DataChanged(const TabRendererData& old) { |
} |
void Tab::PaintTab(gfx::Canvas* canvas, const gfx::Path& clip) { |
- const int kActiveTabFillId = IDR_THEME_TOOLBAR; |
- const bool has_custom_image = |
- GetThemeProvider()->HasCustomImage(kActiveTabFillId); |
+ const int kActiveTabFillId = |
+ GetThemeProvider()->HasCustomImage(IDR_THEME_TOOLBAR) ? IDR_THEME_TOOLBAR |
+ : 0; |
const int y_offset = -GetLayoutInsets(TAB).top(); |
if (IsActive()) { |
PaintTabBackgroundUsingFillId(canvas, canvas, true, kActiveTabFillId, |
- has_custom_image, y_offset); |
+ y_offset); |
} else { |
PaintInactiveTabBackground(canvas, clip); |
@@ -1158,7 +1158,7 @@ void Tab::PaintTab(gfx::Canvas* canvas, const gfx::Path& clip) { |
canvas->SaveLayerAlpha(gfx::ToRoundedInt(throb_value * 0xff), |
GetLocalBounds()); |
PaintTabBackgroundUsingFillId(canvas, canvas, true, kActiveTabFillId, |
- has_custom_image, y_offset); |
+ y_offset); |
canvas->Restore(); |
} |
} |
@@ -1215,20 +1215,24 @@ void Tab::PaintInactiveTabBackground(gfx::Canvas* canvas, |
const gfx::Path& clip) { |
bool has_custom_image; |
int fill_id = controller_->GetBackgroundResourceId(&has_custom_image); |
- |
- // If the theme is providing a custom background image, then its top edge |
- // should be at the top of the tab. Otherwise, we assume that the background |
- // image is a composited foreground + frame image. Note that if the theme is |
- // only providing a custom frame image, |has_custom_image| will be true, but |
- // we should use the |background_offset_| here. |
const ui::ThemeProvider* tp = GetThemeProvider(); |
- const int y_offset = tp->HasCustomImage(fill_id) ? 0 : background_offset_.y(); |
// We only cache the image when it's the default image and we're not hovered, |
// to avoid caching a background image that isn't the same for all tabs. |
Peter Kasting
2016/10/21 21:07:50
Nit: This comment is slightly confusing now that y
Evan Stade
2016/10/21 22:11:12
actually, there would be a need for
..., has_c
Peter Kasting
2016/10/22 00:14:44
Ah, you're right. Man, I thought through this lik
Evan Stade
2016/10/24 13:01:20
incidentally, already done in latest patchset
|
- if (has_custom_image || hover_controller_.ShouldDraw()) { |
- PaintTabBackgroundUsingFillId(canvas, canvas, false, fill_id, |
- has_custom_image, y_offset); |
+ if (has_custom_image) { |
+ // If the theme is providing a custom background image, then its top edge |
+ // should be at the top of the tab. Otherwise, we assume that the background |
+ // image is a composited foreground + frame image. Note that if the theme |
+ // is only providing a custom frame image, |has_custom_image| will be true, |
+ // but we should use the |background_offset_| here. |
+ const int y_offset = |
+ tp->HasCustomImage(fill_id) ? 0 : background_offset_.y(); |
+ PaintTabBackgroundUsingFillId(canvas, canvas, false, fill_id, y_offset); |
+ return; |
+ } |
+ |
+ if (hover_controller_.ShouldDraw()) { |
+ PaintTabBackgroundUsingFillId(canvas, canvas, false, 0, 0); |
return; |
} |
@@ -1249,14 +1253,12 @@ void Tab::PaintInactiveTabBackground(gfx::Canvas* canvas, |
gfx::Canvas tmp_canvas(size(), canvas->image_scale(), false); |
if (use_fill_and_stroke_images) { |
gfx::Canvas tmp_fill_canvas(size(), canvas->image_scale(), false); |
- PaintTabBackgroundUsingFillId(&tmp_fill_canvas, &tmp_canvas, false, |
- fill_id, false, y_offset); |
+ PaintTabBackgroundUsingFillId(&tmp_fill_canvas, &tmp_canvas, false, 0, 0); |
g_image_cache->emplace_front( |
metadata, gfx::ImageSkia(tmp_fill_canvas.ExtractImageRep()), |
gfx::ImageSkia(tmp_canvas.ExtractImageRep())); |
} else { |
- PaintTabBackgroundUsingFillId(&tmp_canvas, &tmp_canvas, false, fill_id, |
- false, y_offset); |
+ PaintTabBackgroundUsingFillId(&tmp_canvas, &tmp_canvas, false, 0, 0); |
g_image_cache->emplace_front( |
metadata, gfx::ImageSkia(), |
gfx::ImageSkia(tmp_canvas.ExtractImageRep())); |
@@ -1279,7 +1281,6 @@ void Tab::PaintTabBackgroundUsingFillId(gfx::Canvas* fill_canvas, |
gfx::Canvas* stroke_canvas, |
bool is_active, |
int fill_id, |
- bool has_custom_image, |
int y_offset) { |
gfx::Path fill; |
SkPaint paint; |
@@ -1296,7 +1297,7 @@ void Tab::PaintTabBackgroundUsingFillId(gfx::Canvas* fill_canvas, |
{ |
gfx::ScopedCanvas clip_scoper(fill_canvas); |
fill_canvas->ClipPath(fill, true); |
- if (has_custom_image) { |
+ if (fill_id != 0) { |
Peter Kasting
2016/10/21 21:07:51
Nit: To avoid the else reading like a double-negat
Evan Stade
2016/10/21 22:11:12
Done.
|
gfx::ScopedCanvas scale_scoper(fill_canvas); |
fill_canvas->sk_canvas()->scale(scale, scale); |
fill_canvas->TileImageInt(*tp->GetImageSkiaNamed(fill_id), |