Chromium Code Reviews| Index: ui/views/controls/textfield/textfield.cc |
| diff --git a/ui/views/controls/textfield/textfield.cc b/ui/views/controls/textfield/textfield.cc |
| index c9987ca6331d2b1b83eb0dec90978aea00a7dd30..c9f3156edc502bca02b1e8ebb365d53f5ed83555 100644 |
| --- a/ui/views/controls/textfield/textfield.cc |
| +++ b/ui/views/controls/textfield/textfield.cc |
| @@ -1063,16 +1063,21 @@ void Textfield::WriteDragDataForView(View* sender, |
| display::Screen::GetScreen()->GetDisplayNearestWindow(native_view); |
| size.SetToMin(gfx::Size(display.size().width(), height())); |
| label.SetBoundsRect(gfx::Rect(size)); |
| - std::unique_ptr<gfx::Canvas> canvas( |
| - GetCanvasForDragImage(GetWidget(), label.size())); |
| label.SetEnabledColor(GetTextColor()); |
| + |
| + SkBitmap bitmap; |
| + float raster_scale = GetDeviceScaleForNativeView(GetWidget()); |
| #if defined(OS_LINUX) && !defined(OS_CHROMEOS) |
| // Desktop Linux Aura does not yet support transparency in drag images. |
| - canvas->DrawColor(GetBackgroundColor()); |
| + SkColor color(GetBackgroundColor()); |
|
tapted
2017/02/14 23:34:07
color = (same below)
|
| +#else |
| + SkColor color(SK_ColorTRANSPARENT); |
| #endif |
| - label.Paint(ui::CanvasPainter(canvas.get(), 1.f).context()); |
| + label.Paint( |
| + ui::CanvasPainter(&bitmap, label.size(), raster_scale, color).context()); |
| const gfx::Vector2d kOffset(-15, 0); |
| - drag_utils::SetDragImageOnDataObject(*canvas, kOffset, data); |
| + gfx::ImageSkia image(gfx::ImageSkiaRep(bitmap, raster_scale)); |
| + drag_utils::SetDragImageOnDataObject(image, kOffset, data); |
| if (controller_) |
| controller_->OnWriteDragData(data); |
| } |