Chromium Code Reviews| Index: ui/views/widget/desktop_aura/desktop_screen_position_client.cc |
| diff --git a/ui/views/widget/desktop_aura/desktop_screen_position_client.cc b/ui/views/widget/desktop_aura/desktop_screen_position_client.cc |
| index 5b4dbc0fcc1572f370244d79ca6195a21ee8bd00..2c268b865051cd692a84924aab84254d47adfc23 100644 |
| --- a/ui/views/widget/desktop_aura/desktop_screen_position_client.cc |
| +++ b/ui/views/widget/desktop_aura/desktop_screen_position_client.cc |
| @@ -5,8 +5,25 @@ |
| #include "ui/views/widget/desktop_aura/desktop_screen_position_client.h" |
| #include "ui/aura/root_window.h" |
| +#include "ui/gfx/display.h" |
| +#include "ui/gfx/point_conversions.h" |
| +#include "ui/gfx/screen.h" |
| + |
| #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h" |
| +namespace { |
| + |
| +gfx::Point GetOrigin(const aura::RootWindow* root_window) { |
| + gfx::Point origin_in_pixels = root_window->GetHostOrigin(); |
| + aura::RootWindow* window = const_cast<aura::RootWindow*>(root_window); |
| + float scale = gfx::Screen::GetScreenFor(window)-> |
|
oshima
2013/03/21 00:31:55
can you use GetScaleFactorForNativewView?
kevers
2013/03/21 13:37:26
GetScaleFactorForNativeView returns an enumerated
oshima
2013/03/23 04:31:55
fair enough. lgtm
|
| + GetDisplayNearestWindow(window).device_scale_factor(); |
| + return gfx::ToFlooredPoint( |
| + gfx::ScalePoint(origin_in_pixels, 1 / scale)); |
| +} |
| + |
| +} // namespace |
| + |
| namespace views { |
| DesktopScreenPositionClient::DesktopScreenPositionClient() { |
| @@ -19,14 +36,14 @@ void DesktopScreenPositionClient::ConvertPointToScreen( |
| const aura::Window* window, gfx::Point* point) { |
| const aura::RootWindow* root_window = window->GetRootWindow(); |
| aura::Window::ConvertPointToTarget(window, root_window, point); |
| - gfx::Point origin = root_window->GetHostOrigin(); |
| + gfx::Point origin = GetOrigin(root_window); |
| point->Offset(origin.x(), origin.y()); |
| } |
| void DesktopScreenPositionClient::ConvertPointFromScreen( |
| const aura::Window* window, gfx::Point* point) { |
| const aura::RootWindow* root_window = window->GetRootWindow(); |
| - gfx::Point origin = root_window->GetHostOrigin(); |
| + gfx::Point origin = GetOrigin(root_window); |
| point->Offset(-origin.x(), -origin.y()); |
| aura::Window::ConvertPointToTarget(root_window, window, point); |
| } |
| @@ -53,7 +70,7 @@ void DesktopScreenPositionClient::SetBounds( |
| // The caller expects windows we consider "embedded" to be placed in the |
| // screen coordinate system. So we need to offset the root window's |
| // position (which is in screen coordinates) from these bounds. |
| - gfx::Point host_origin = root->GetHostOrigin(); |
| + gfx::Point host_origin = GetOrigin(root); |
| origin.Offset(-host_origin.x(), -host_origin.y()); |
| window->SetBounds(gfx::Rect(origin, bounds.size())); |
| return; |