[email protected] | 36557fd0 | 2012-04-03 23:44:51 | [diff] [blame] | 1 | // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 | // Use of this source code is governed by a BSD-style license that can be | ||||
3 | // found in the LICENSE file. | ||||
4 | |||||
5 | #include "ui/views/drag_utils.h" | ||||
6 | |||||
[email protected] | de732e80 | 2014-03-10 18:12:09 | [diff] [blame] | 7 | #include "ui/gfx/canvas.h" |
[email protected] | c600edba | 2012-06-19 21:25:34 | [diff] [blame] | 8 | #include "ui/gfx/display.h" |
9 | #include "ui/gfx/screen.h" | ||||
[email protected] | de732e80 | 2014-03-10 18:12:09 | [diff] [blame] | 10 | #include "ui/gfx/size.h" |
[email protected] | c600edba | 2012-06-19 21:25:34 | [diff] [blame] | 11 | #include "ui/views/widget/widget.h" |
[email protected] | 1b21d1a8 | 2014-04-30 11:19:32 | [diff] [blame] | 12 | |
13 | namespace { | ||||
[email protected] | 36557fd0 | 2012-04-03 23:44:51 | [diff] [blame] | 14 | |
[email protected] | 50b6626 | 2013-09-24 03:25:48 | [diff] [blame] | 15 | float GetDeviceScaleForNativeView(views::Widget* widget) { |
16 | float device_scale = 1.0f; | ||||
[email protected] | c600edba | 2012-06-19 21:25:34 | [diff] [blame] | 17 | // The following code should work on other platforms as well. But we do not |
18 | // yet care about device scale factor on other platforms. So to keep drag and | ||||
19 | // drop behavior on other platforms un-touched, we wrap this in the #if guard. | ||||
20 | if (widget && widget->GetNativeView()) { | ||||
[email protected] | ffabb1e | 2012-10-12 19:51:17 | [diff] [blame] | 21 | gfx::NativeView view = widget->GetNativeView(); |
22 | gfx::Display display = gfx::Screen::GetScreenFor(view)-> | ||||
23 | GetDisplayNearestWindow(view); | ||||
[email protected] | 50b6626 | 2013-09-24 03:25:48 | [diff] [blame] | 24 | device_scale = display.device_scale_factor(); |
[email protected] | c600edba | 2012-06-19 21:25:34 | [diff] [blame] | 25 | } |
[email protected] | 50b6626 | 2013-09-24 03:25:48 | [diff] [blame] | 26 | return device_scale; |
[email protected] | c600edba | 2012-06-19 21:25:34 | [diff] [blame] | 27 | } |
28 | |||||
[email protected] | 1b21d1a8 | 2014-04-30 11:19:32 | [diff] [blame] | 29 | } // namespace |
[email protected] | 36557fd0 | 2012-04-03 23:44:51 | [diff] [blame] | 30 | |
[email protected] | 1b21d1a8 | 2014-04-30 11:19:32 | [diff] [blame] | 31 | namespace views { |
[email protected] | 36557fd0 | 2012-04-03 23:44:51 | [diff] [blame] | 32 | |
[email protected] | c600edba | 2012-06-19 21:25:34 | [diff] [blame] | 33 | gfx::Canvas* GetCanvasForDragImage(views::Widget* widget, |
34 | const gfx::Size& canvas_size) { | ||||
[email protected] | 50b6626 | 2013-09-24 03:25:48 | [diff] [blame] | 35 | float device_scale = GetDeviceScaleForNativeView(widget); |
36 | return new gfx::Canvas(canvas_size, device_scale, false); | ||||
[email protected] | c600edba | 2012-06-19 21:25:34 | [diff] [blame] | 37 | } |
38 | |||||
[email protected] | 36557fd0 | 2012-04-03 23:44:51 | [diff] [blame] | 39 | } // namespace views |