Chromium Code Reviews| Index: ui/views/mus/native_widget_mus.cc |
| diff --git a/ui/views/mus/native_widget_mus.cc b/ui/views/mus/native_widget_mus.cc |
| index 7b04c96b1db82ef3eadf918d910a9dc24818200c..0f363aa741eb68d19d913c9b42189ea2bc32125b 100644 |
| --- a/ui/views/mus/native_widget_mus.cc |
| +++ b/ui/views/mus/native_widget_mus.cc |
| @@ -38,6 +38,7 @@ |
| #include "ui/display/screen.h" |
| #include "ui/events/event.h" |
| #include "ui/gfx/canvas.h" |
| +#include "ui/gfx/geometry/dip_util.h" |
| #include "ui/gfx/path.h" |
| #include "ui/native_theme/native_theme.h" |
| #include "ui/platform_window/platform_window_delegate.h" |
| @@ -394,6 +395,14 @@ void SetIconProperty(ui::Window* window, |
| window->ClearSharedProperty(property); |
| } |
| +// Helper function to get the device_scale_factor() of the display::Display |
| +// nearest to |window|. |
| +float ScaleFactorForDisplay(aura::Window* window) { |
| + return display::Screen::GetScreen() |
| + ->GetDisplayNearestWindow(window) |
| + .device_scale_factor(); |
| +} |
| + |
| } // namespace |
| class NativeWidgetMus::MusWindowObserver : public ui::WindowObserver { |
| @@ -460,7 +469,8 @@ class NativeWidgetMus::MusWindowObserver : public ui::WindowObserver { |
| const gfx::Rect& old_bounds, |
| const gfx::Rect& new_bounds) override { |
| DCHECK_EQ(window, mus_window()); |
| - window_tree_host()->SetBoundsInPixels(new_bounds); |
| + window_tree_host()->SetBoundsInPixels(gfx::ConvertRectToPixel( |
| + ScaleFactorForDisplay(aura_window()), new_bounds)); |
| } |
| void OnWindowFocusChanged(ui::Window* gained_focus, |
| ui::Window* lost_focus) override { |
| @@ -475,6 +485,7 @@ class NativeWidgetMus::MusWindowObserver : public ui::WindowObserver { |
| private: |
| ui::Window* mus_window() { return native_widget_mus_->window(); } |
| + aura::Window* aura_window() { return native_widget_mus_->aura_window(); } |
| WindowTreeHostMus* window_tree_host() { |
| return native_widget_mus_->window_tree_host(); |
| } |
| @@ -1018,7 +1029,9 @@ void NativeWidgetMus::SetBounds(const gfx::Rect& bounds_in_screen) { |
| size.SetToMax(min_size); |
| window_->SetBounds(gfx::Rect(origin, size)); |
| // Observer on |window_tree_host_| expected to synchronously update bounds. |
| - DCHECK(window_->bounds() == window_tree_host_->GetBoundsInPixels()); |
| + DCHECK(gfx::ConvertRectToPixel(ScaleFactorForDisplay(content_), |
| + window_->bounds()) == |
| + window_tree_host_->GetBoundsInPixels()); |
|
sadrul
2016/12/16 18:14:08
DCHECK_EQ
riajiang
2016/12/19 23:51:55
Done.
|
| } |
| void NativeWidgetMus::SetSize(const gfx::Size& size) { |