diff options
author | kevers@chromium.org <kevers@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-19 17:49:02 +0000 |
---|---|---|
committer | kevers@chromium.org <kevers@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-19 17:49:02 +0000 |
commit | 164416f1d21c84509cebb1f0c8e43b311e9d4bd3 (patch) | |
tree | 8da314aeef4bbb66e589f23f8fdc6c356de809d4 /ui | |
parent | dd7ae928e9d6a9ebf3891675c07cfec643ffccb6 (diff) | |
download | chromium_src-164416f1d21c84509cebb1f0c8e43b311e9d4bd3.zip chromium_src-164416f1d21c84509cebb1f0c8e43b311e9d4bd3.tar.gz chromium_src-164416f1d21c84509cebb1f0c8e43b311e9d4bd3.tar.bz2 |
Fix size and positioning of popup windows to work in DIP for Win-Aura in high-DPI mode.
BUG=232434
Review URL: https://chromiumcodereview.appspot.com/14205007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@195226 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui')
-rw-r--r-- | ui/views/widget/desktop_aura/desktop_native_widget_aura.cc | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc b/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc index 3fed417..3c1d4c6 100644 --- a/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc +++ b/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc @@ -17,6 +17,10 @@ #include "ui/base/hit_test.h" #include "ui/compositor/layer.h" #include "ui/gfx/canvas.h" +#include "ui/gfx/display.h" +#include "ui/gfx/point_conversions.h" +#include "ui/gfx/screen.h" +#include "ui/gfx/size_conversions.h" #include "ui/native_theme/native_theme.h" #include "ui/views/corewm/compound_event_filter.h" #include "ui/views/corewm/corewm_switches.h" @@ -401,7 +405,16 @@ gfx::Rect DesktopNativeWidgetAura::GetRestoredBounds() const { } void DesktopNativeWidgetAura::SetBounds(const gfx::Rect& bounds) { - desktop_root_window_host_->AsRootWindowHost()->SetBounds(bounds); + float scale = 1; + aura::RootWindow* root = root_window_.get(); + if (root) { + scale = gfx::Screen::GetScreenFor(root)-> + GetDisplayNearestWindow(root).device_scale_factor(); + } + gfx::Rect bounds_in_pixels( + gfx::ToCeiledPoint(gfx::ScalePoint(bounds.origin(), scale)), + gfx::ToFlooredSize(gfx::ScaleSize(bounds.size(), scale))); + desktop_root_window_host_->AsRootWindowHost()->SetBounds(bounds_in_pixels); } void DesktopNativeWidgetAura::SetSize(const gfx::Size& size) { |