Index: chrome/browser/ui/views/frame/minimize_button_metrics_win.cc |
diff --git a/chrome/browser/ui/views/frame/minimize_button_metrics_win.cc b/chrome/browser/ui/views/frame/minimize_button_metrics_win.cc |
index 095f2574c83c9ed91b29b7ec8972c8022cbe5d8d..a07b94a089eb4bfffb74e038399865bd30448059 100644 |
--- a/chrome/browser/ui/views/frame/minimize_button_metrics_win.cc |
+++ b/chrome/browser/ui/views/frame/minimize_button_metrics_win.cc |
@@ -52,6 +52,30 @@ MinimizeButtonMetrics::MinimizeButtonMetrics() |
MinimizeButtonMetrics::~MinimizeButtonMetrics() { |
} |
+// static |
+int MinimizeButtonMetrics::GetCaptionButtonHeight() { |
+ // Caption button height is not affected by DPI settings. |
Peter Kasting
2017/04/26 17:19:52
robliao says that in his testing, this isn't corre
|
+ // GetSystemMetrics(SM_CYSIZE) returns the same value regardless of the DPI |
+ // settings of any monitor (28 on Windows 10). This is what needs to be |
Peter Kasting
2017/04/26 17:19:52
Rob also notes he gets 22 here, not 28. I would j
|
+ // passed to a View, which then takes care of the scaling. |
Peter Kasting
2017/04/26 17:19:52
Nit: No need for the last sentence here
|
+ |
+ // A View drawn to this height may look ~1px off at some DPI settings. |
Peter Kasting
2017/04/26 17:19:52
I think "~1" is inaccurate here. Assuming the con
|
+ // http://crbug.com/668278 tracks pixel-precise positioning for this. |
+ // (According to robliao@ and bsep@ the solution is probably |
+ // GetSystemMetricsForDpi.) |
+ |
+ // Note that the following methods all return scaled values, which is not |
+ // what the caller expects: |
+ // DwmGetWindowAttribute(hwnd_, DWMWA_CAPTION_BUTTON_BOUNDS, ...) |
+ // SendMessage(hwnd_, WM_GETTITLEBARINFOEX, ...) |
+ // display::win::ScreenWin::GetSystemMetricsForHwnd(hwnd_, SM_CYSIZE) |
+ // these all return (height * scale factor) e.g. 56 at 200% |
+ // display::win::ScreenWin::GetSystemMetricsInDIP(SM_CYSIZE) |
+ // returns (height / by primary monitor scale factor) e.g. 22 for 125% |
Peter Kasting
2017/04/26 17:19:52
I would omit this comment entirely, as your first
|
+ |
+ return GetSystemMetrics(SM_CYSIZE); |
+} |
+ |
void MinimizeButtonMetrics::Init(HWND hwnd) { |
DCHECK(!hwnd_); |
hwnd_ = hwnd; |
@@ -123,7 +147,7 @@ int MinimizeButtonMetrics::GetMinimizeButtonOffsetForWindow() const { |
TITLEBARINFOEX titlebar_info = {0}; |
titlebar_info.cbSize = sizeof(TITLEBARINFOEX); |
SendMessage(hwnd_, WM_GETTITLEBARINFOEX, 0, |
- reinterpret_cast<WPARAM>(&titlebar_info)); |
+ reinterpret_cast<LPARAM>(&titlebar_info)); |
// Under DWM WM_GETTITLEBARINFOEX won't return the right thing until after |
// WM_NCACTIVATE (maybe it returns classic values?). In an attempt to |