Chromium Code Reviews| Index: ui/views/controls/label.cc |
| diff --git a/ui/views/controls/label.cc b/ui/views/controls/label.cc |
| index ada76779cfc7875a48d4f39dda80919f9bd11761..c596b98afb57ed69f14dd2bd5c28ba55e80abfec 100644 |
| --- a/ui/views/controls/label.cc |
| +++ b/ui/views/controls/label.cc |
| @@ -450,8 +450,30 @@ std::unique_ptr<gfx::RenderText> Label::CreateRenderText( |
| void Label::PaintText(gfx::Canvas* canvas) { |
| MaybeBuildRenderTextLines(); |
| + |
| for (size_t i = 0; i < lines_.size(); ++i) |
| lines_[i]->Draw(canvas); |
| + |
| +#if DCHECK_IS_ON() |
| + if (!lines_.empty()) { |
|
sadrul
2017/02/08 02:13:56
early return insrtead
Evan Stade
2017/02/11 00:18:07
Done.
|
| + // Attempt to ensure that if we're using subpixel rendering, we're painting |
| + // to an opaque background. What we don't want to find is an ancestor in the |
| + // hierarchy that paints to a non-opaque layer. |
| + if (!lines_[0]->subpixel_rendering_suppressed()) { |
|
sadrul
2017/02/08 02:13:56
ditto
Evan Stade
2017/02/11 00:18:07
Done.
|
| + for (View* view = this; view; view = view->parent()) { |
| + if (view->background()) |
|
sadrul
2017/02/08 02:13:56
Maybe you can continue with the loop if SkColorGet
Evan Stade
2017/02/11 00:18:07
Done.
|
| + break; |
| + if (view->layer()) { |
| + DCHECK(view->layer()->fills_bounds_opaquely()) |
| + << " Ancestor view has a non-opaque layer: " |
| + << view->GetClassName() << " with ID " << view->id(); |
| + break; |
| + } |
| + } |
| + } |
| + } |
| +#endif |
| + |
| } |
| void Label::OnBoundsChanged(const gfx::Rect& previous_bounds) { |
| @@ -979,7 +1001,8 @@ void Label::RecalculateColors() { |
| void Label::ApplyTextColors() const { |
| SkColor color = enabled() ? actual_enabled_color_ : actual_disabled_color_; |
| bool subpixel_rendering_suppressed = |
| - SkColorGetA(background_color_) != 0xFF || !subpixel_rendering_enabled_; |
| + SkColorGetA(background_color_) != SK_AlphaOPAQUE || |
| + !subpixel_rendering_enabled_; |
| for (size_t i = 0; i < lines_.size(); ++i) { |
| lines_[i]->SetColor(color); |
| lines_[i]->set_selection_color(actual_selection_text_color_); |