Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1169)

Unified Diff: ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc

Issue 1426933002: Refactor Windows DPI Point, Rect, and Size for Multiple Monitor DPI Awareness (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed Other Unit Tests - Moved Inner Classes Outside Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
index c354154a542c87f0dbdcdc46a9d6820d12215356..16aa5cc913331829b3a903c679b61db2fae8104b 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
@@ -21,6 +21,7 @@
#include "ui/gfx/native_widget_types.h"
#include "ui/gfx/path.h"
#include "ui/gfx/path_win.h"
+#include "ui/gfx/screen_win.h"
#include "ui/gfx/win/dpi.h"
#include "ui/native_theme/native_theme_aura.h"
#include "ui/native_theme/native_theme_win.h"
@@ -140,7 +141,9 @@ void DesktopWindowTreeHostWin::Init(aura::Window* content_window,
has_non_client_view_ = Widget::RequiresNonClientView(params.type);
- gfx::Rect pixel_bounds = gfx::win::DIPToScreenRect(params.bounds);
+ // We don't have an HWND yet, so scale relative to the nearest screen.
+ gfx::Rect pixel_bounds = gfx::ScreenWin::DIPToScreenRect(nullptr,
+ params.bounds);
message_handler_->Init(parent_hwnd, pixel_bounds);
if (params.force_software_compositing) {
::SetProp(GetAcceleratedWidget(),
@@ -218,7 +221,8 @@ void DesktopWindowTreeHostWin::ShowMaximizedWithBounds(
const gfx::Rect& restored_bounds) {
if (compositor())
compositor()->SetVisible(true);
- gfx::Rect pixel_bounds = gfx::win::DIPToScreenRect(restored_bounds);
+ gfx::Rect pixel_bounds = gfx::ScreenWin::DIPToScreenRect(GetHWND(),
+ restored_bounds);
message_handler_->ShowMaximizedWithBounds(pixel_bounds);
}
@@ -227,7 +231,7 @@ bool DesktopWindowTreeHostWin::IsVisible() const {
}
void DesktopWindowTreeHostWin::SetSize(const gfx::Size& size) {
- gfx::Size size_in_pixels = gfx::win::DIPToScreenSize(size);
+ gfx::Size size_in_pixels = gfx::ScreenWin::DIPToScreenSize(GetHWND(), size);
gfx::Size expanded = GetExpandedWindowSize(
message_handler_->window_ex_style(), size_in_pixels);
window_enlargement_ =
@@ -247,7 +251,7 @@ void DesktopWindowTreeHostWin::StackAtTop() {
}
void DesktopWindowTreeHostWin::CenterWindow(const gfx::Size& size) {
- gfx::Size size_in_pixels = gfx::win::DIPToScreenSize(size);
+ gfx::Size size_in_pixels = gfx::ScreenWin::DIPToScreenSize(GetHWND(), size);
gfx::Size expanded_size;
expanded_size = GetExpandedWindowSize(message_handler_->window_ex_style(),
size_in_pixels);
@@ -262,25 +266,25 @@ void DesktopWindowTreeHostWin::GetWindowPlacement(
ui::WindowShowState* show_state) const {
message_handler_->GetWindowPlacement(bounds, show_state);
InsetBottomRight(bounds, window_enlargement_);
- *bounds = gfx::win::ScreenToDIPRect(*bounds);
+ *bounds = gfx::ScreenWin::ScreenToDIPRect(GetHWND(), *bounds);
}
gfx::Rect DesktopWindowTreeHostWin::GetWindowBoundsInScreen() const {
gfx::Rect pixel_bounds = message_handler_->GetWindowBoundsInScreen();
InsetBottomRight(&pixel_bounds, window_enlargement_);
- return gfx::win::ScreenToDIPRect(pixel_bounds);
+ return gfx::ScreenWin::ScreenToDIPRect(GetHWND(), pixel_bounds);
}
gfx::Rect DesktopWindowTreeHostWin::GetClientAreaBoundsInScreen() const {
gfx::Rect pixel_bounds = message_handler_->GetClientAreaBoundsInScreen();
InsetBottomRight(&pixel_bounds, window_enlargement_);
- return gfx::win::ScreenToDIPRect(pixel_bounds);
+ return gfx::ScreenWin::ScreenToDIPRect(GetHWND(), pixel_bounds);
}
gfx::Rect DesktopWindowTreeHostWin::GetRestoredBounds() const {
gfx::Rect pixel_bounds = message_handler_->GetRestoredBounds();
InsetBottomRight(&pixel_bounds, window_enlargement_);
- return gfx::win::ScreenToDIPRect(pixel_bounds);
+ return gfx::ScreenWin::ScreenToDIPRect(GetHWND(), pixel_bounds);
}
gfx::Rect DesktopWindowTreeHostWin::GetWorkAreaBoundsInScreen() const {
@@ -290,7 +294,7 @@ gfx::Rect DesktopWindowTreeHostWin::GetWorkAreaBoundsInScreen() const {
MONITOR_DEFAULTTONEAREST),
&monitor_info);
gfx::Rect pixel_bounds = gfx::Rect(monitor_info.rcWork);
- return gfx::win::ScreenToDIPRect(pixel_bounds);
+ return gfx::ScreenWin::ScreenToDIPRect(GetHWND(), pixel_bounds);
}
void DesktopWindowTreeHostWin::SetShape(SkRegion* native_region) {
@@ -648,7 +652,7 @@ bool DesktopWindowTreeHostWin::WillProcessWorkAreaChange() const {
int DesktopWindowTreeHostWin::GetNonClientComponent(
const gfx::Point& point) const {
- gfx::Point dip_position = gfx::win::ScreenToDIPPoint(point);
+ gfx::Point dip_position = gfx::ScreenWin::ClientToDIPPoint(GetHWND(), point);
return native_widget_delegate_->GetNonClientComponent(dip_position);
}
@@ -679,6 +683,11 @@ gfx::Size DesktopWindowTreeHostWin::GetRootViewSize() const {
return GetWidget()->GetRootView()->size();
}
+gfx::Size DesktopWindowTreeHostWin::DIPToScreenSize(
+ const gfx::Size& dip_size) const {
+ return gfx::ScreenWin::DIPToScreenSize(GetHWND(), dip_size);
+}
+
void DesktopWindowTreeHostWin::ResetWindowControls() {
GetWidget()->non_client_view()->ResetWindowControls();
}

Powered by Google App Engine
This is Rietveld 408576698