| Index: ui/gfx/win/window_impl.cc
|
| diff --git a/ui/gfx/win/window_impl.cc b/ui/gfx/win/window_impl.cc
|
| index bf43ba59045490bbb0c169dcfe12637745d6fb36..4a9cbf6001f8287f1117ef2f63402d6ec2d8a156 100644
|
| --- a/ui/gfx/win/window_impl.cc
|
| +++ b/ui/gfx/win/window_impl.cc
|
| @@ -12,6 +12,7 @@
|
| #include "base/memory/singleton.h"
|
| #include "base/strings/string_number_conversions.h"
|
| #include "base/synchronization/lock.h"
|
| +#include "base/win/win_util.h"
|
| #include "base/win/wrapped_window_proc.h"
|
| #include "ui/gfx/win/hwnd_util.h"
|
|
|
| @@ -212,6 +213,19 @@ void WindowImpl::Init(HWND parent, const Rect& bounds) {
|
| reinterpret_cast<wchar_t*>(atom), NULL,
|
| window_style_, x, y, width, height,
|
| parent, NULL, NULL, this);
|
| + if (hwnd && base::win::IsProcessPerMonitorDpiAware()) {
|
| + static auto enable_child_window_dpi_message_func = []() {
|
| + // Derived signature; not available in headers.
|
| + // This call gets Windows to scale the non-client area when WM_DPICHANGED
|
| + // is fired.
|
| + using EnableChildWindowDpiMessagePtr = LRESULT (WINAPI*)(HWND, BOOL);
|
| + return reinterpret_cast<EnableChildWindowDpiMessagePtr>(
|
| + GetProcAddress(GetModuleHandle(L"user32.dll"),
|
| + "EnableChildWindowDpiMessage"));
|
| + }();
|
| + if (enable_child_window_dpi_message_func)
|
| + enable_child_window_dpi_message_func(hwnd, TRUE);
|
| + }
|
|
|
| // First nccalcszie (during CreateWindow) for captioned windows is
|
| // deliberately ignored so force a second one here to get the right
|
|
|