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

Side by Side Diff: ui/display/win/screen_win.cc

Issue 2110313002: Add ScreenWin::GetSystemMetricsForHwnd (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: CR Feedback Created 4 years, 5 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 unified diff | Download patch
« no previous file with comments | « ui/display/win/screen_win.h ('k') | ui/display/win/screen_win_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/display/win/screen_win.h" 5 #include "ui/display/win/screen_win.h"
6 6
7 #include <windows.h> 7 #include <windows.h>
8 #include <shellscalingapi.h> 8 #include <shellscalingapi.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 return ScaleToCeiledSize(size_in_pixels, 1.0f / GetScaleFactorForHWND(hwnd)); 288 return ScaleToCeiledSize(size_in_pixels, 1.0f / GetScaleFactorForHWND(hwnd));
289 } 289 }
290 290
291 // static 291 // static
292 gfx::Size ScreenWin::DIPToScreenSize(HWND hwnd, const gfx::Size& dip_size) { 292 gfx::Size ScreenWin::DIPToScreenSize(HWND hwnd, const gfx::Size& dip_size) {
293 float scale_factor = GetScaleFactorForHWND(hwnd); 293 float scale_factor = GetScaleFactorForHWND(hwnd);
294 // Always ceil sizes. Otherwise we may be leaving off part of the bounds. 294 // Always ceil sizes. Otherwise we may be leaving off part of the bounds.
295 return ScaleToCeiledSize(dip_size, scale_factor); 295 return ScaleToCeiledSize(dip_size, scale_factor);
296 } 296 }
297 297
298 // static
299 int ScreenWin::GetSystemMetricsForHwnd(HWND hwnd, int metric) {
300 // GetSystemMetrics returns screen values based off of the primary monitor's
301 // DPI. This will further scale based off of the DPI for |hwnd|.
302 if (!g_screen_win_instance)
303 return ::GetSystemMetrics(metric);
304
305 Display primary_display(g_screen_win_instance->GetPrimaryDisplay());
306 int system_metrics_result = g_screen_win_instance->GetSystemMetrics(metric);
307
308 float metrics_relative_scale_factor = hwnd
309 ? GetScaleFactorForHWND(hwnd) / primary_display.device_scale_factor()
310 : 1.0f;
311 return static_cast<int>(std::round(
312 system_metrics_result * metrics_relative_scale_factor));
313 }
314
298 HWND ScreenWin::GetHWNDFromNativeView(gfx::NativeView window) const { 315 HWND ScreenWin::GetHWNDFromNativeView(gfx::NativeView window) const {
299 NOTREACHED(); 316 NOTREACHED();
300 return nullptr; 317 return nullptr;
301 } 318 }
302 319
303 gfx::NativeWindow ScreenWin::GetNativeWindowFromHWND(HWND hwnd) const { 320 gfx::NativeWindow ScreenWin::GetNativeWindowFromHWND(HWND hwnd) const {
304 NOTREACHED(); 321 NOTREACHED();
305 return nullptr; 322 return nullptr;
306 } 323 }
307 324
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 429
413 MONITORINFOEX ScreenWin::MonitorInfoFromWindow(HWND hwnd, 430 MONITORINFOEX ScreenWin::MonitorInfoFromWindow(HWND hwnd,
414 DWORD default_options) const { 431 DWORD default_options) const {
415 return MonitorInfoFromHMONITOR(::MonitorFromWindow(hwnd, default_options)); 432 return MonitorInfoFromHMONITOR(::MonitorFromWindow(hwnd, default_options));
416 } 433 }
417 434
418 HWND ScreenWin::GetRootWindow(HWND hwnd) const { 435 HWND ScreenWin::GetRootWindow(HWND hwnd) const {
419 return ::GetAncestor(hwnd, GA_ROOT); 436 return ::GetAncestor(hwnd, GA_ROOT);
420 } 437 }
421 438
439 int ScreenWin::GetSystemMetrics(int metric) const {
440 return ::GetSystemMetrics(metric);
441 }
442
422 void ScreenWin::OnWndProc(HWND hwnd, 443 void ScreenWin::OnWndProc(HWND hwnd,
423 UINT message, 444 UINT message,
424 WPARAM wparam, 445 WPARAM wparam,
425 LPARAM lparam) { 446 LPARAM lparam) {
426 if (message != WM_DISPLAYCHANGE) 447 if (message != WM_DISPLAYCHANGE)
427 return; 448 return;
428 449
429 std::vector<display::Display> old_displays = GetAllDisplays(); 450 std::vector<display::Display> old_displays = GetAllDisplays();
430 UpdateFromDisplayInfos(GetDisplayInfosFromSystem()); 451 UpdateFromDisplayInfos(GetDisplayInfosFromSystem());
431 change_notifier_.NotifyDisplaysChanged(old_displays, GetAllDisplays()); 452 change_notifier_.NotifyDisplaysChanged(old_displays, GetAllDisplays());
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 ScreenWinDisplay ScreenWin::GetScreenWinDisplayVia(Getter getter, 543 ScreenWinDisplay ScreenWin::GetScreenWinDisplayVia(Getter getter,
523 GetterType value) { 544 GetterType value) {
524 if (!g_screen_win_instance) 545 if (!g_screen_win_instance)
525 return ScreenWinDisplay(); 546 return ScreenWinDisplay();
526 547
527 return (g_screen_win_instance->*getter)(value); 548 return (g_screen_win_instance->*getter)(value);
528 } 549 }
529 550
530 } // namespace win 551 } // namespace win
531 } // namespace display 552 } // namespace display
OLDNEW
« no previous file with comments | « ui/display/win/screen_win.h ('k') | ui/display/win/screen_win_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698