Chromium Code Reviews| Index: chrome/browser/ui/views/location_bar/location_bar_view.cc |
| diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc |
| index c39d2fca8b57c5ccc74d5a93ffc65eb87a2dfdf6..f280af21e09b6c71162bb46e748a162166b516f3 100644 |
| --- a/chrome/browser/ui/views/location_bar/location_bar_view.cc |
| +++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc |
| @@ -103,6 +103,32 @@ using views::View; |
| namespace { |
| +void DrawScaledRoundRect(gfx::Canvas* canvas, |
|
Peter Kasting
2015/10/08 21:33:06
Nit: I'd add a comment about what this does, in pa
jonross
2015/10/09 15:59:24
Done.
|
| + SkPaint::Style style, |
| + SkColor color, |
| + gfx::Rect bounds) { |
| + const float display_scale = canvas->image_scale(); |
| + canvas->Save(); |
| + SkScalar scale_factor = 1.0f / display_scale; |
| + canvas->sk_canvas()->scale(scale_factor, scale_factor); |
| + |
| + SkPaint paint; |
| + paint.setStyle(style); |
| + paint.setColor(color); |
| + paint.setAntiAlias(true); |
| + |
| + const float kOffset = 0.5f; |
| + gfx::RectF border_rect_f(bounds); |
| + border_rect_f.Scale(display_scale); |
| + gfx::InsetsF insets(kOffset, kOffset, kOffset, kOffset); |
| + border_rect_f.Inset(insets); |
| + |
| + const SkScalar kCornerRadius = SkDoubleToScalar(2.5f * display_scale); |
| + canvas->sk_canvas()->drawRoundRect(gfx::RectFToSkRect(border_rect_f), |
| + kCornerRadius, kCornerRadius, paint); |
| + canvas->Restore(); |
| +} |
| + |
| int GetEditLeadingInternalSpace() { |
| // The textfield has 1 px of whitespace before the text in the RTL case only. |
| return base::i18n::IsRTL() ? 1 : 0; |
| @@ -1259,6 +1285,8 @@ void LocationBarView::OnPaint(gfx::Canvas* canvas) { |
| SkColor color(GetColor(SecurityStateModel::NONE, BACKGROUND)); |
| if (is_popup_mode_) { |
| canvas->FillRect(bounds, color); |
| + } else if (ui::MaterialDesignController::IsModeMaterial()) { |
| + DrawScaledRoundRect(canvas, SkPaint::kFill_Style, color, bounds); |
| } else { |
| SkPaint paint; |
| paint.setStyle(SkPaint::kFill_Style); |
| @@ -1290,28 +1318,8 @@ void LocationBarView::PaintChildren(const ui::PaintContext& context) { |
| border_rect.Inset(-kPopupEdgeThickness, 0); |
| if (ui::MaterialDesignController::IsModeMaterial()) { |
| - gfx::Canvas* canvas = recorder.canvas(); |
| - const float display_scale = canvas->image_scale(); |
| - canvas->Save(); |
| - SkScalar scale_factor = 1.0f / display_scale; |
| - canvas->sk_canvas()->scale(scale_factor, scale_factor); |
| - |
| - SkPaint paint; |
| - paint.setStyle(SkPaint::Style::kStroke_Style); |
| - paint.setColor(SkColorSetARGB(0x40, 0x00, 0x00, 0x00)); |
| - paint.setStrokeWidth(1); |
| - paint.setAntiAlias(true); |
| - |
| - const float kOffset = 0.5f; |
| - gfx::RectF border_rect_f(border_rect); |
| - border_rect_f.Scale(display_scale); |
| - gfx::InsetsF insets(kOffset, kOffset, kOffset, kOffset); |
| - border_rect_f.Inset(insets); |
| - |
| - const SkScalar kCornerRadius = SkDoubleToScalar(2.5f * display_scale); |
| - canvas->sk_canvas()->drawRoundRect(gfx::RectFToSkRect(border_rect_f), |
| - kCornerRadius, kCornerRadius, paint); |
| - recorder.canvas()->Restore(); |
| + DrawScaledRoundRect(recorder.canvas(), SkPaint::Style::kStroke_Style, |
| + SkColorSetARGB(0x40, 0x00, 0x00, 0x00), border_rect); |
|
Peter Kasting
2015/10/08 21:33:06
I don't think this is right for popup windows, whe
jonross
2015/10/09 15:14:17
I looked at the spec, to get the desired alpha ble
Peter Kasting
2015/10/09 16:03:32
That's what I thought.
There are several ways to
|
| } else { |
| views::Painter::PaintPainterAt(recorder.canvas(), border_painter_.get(), |
| border_rect); |