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 3 // found in the LICENSE file. 4 5 #include "ui/views/widget/desktop_aura/desktop_screen_win.h" 6 7 #include "base/logging.h" 8 #include "ui/aura/window.h" 9 #include "ui/aura/window_event_dispatcher.h" 10 #include "ui/aura/window_tree_host.h" 11 #include "ui/gfx/display.h" 12 #include "ui/views/widget/desktop_aura/desktop_screen.h" 13 #include "ui/views/widget/desktop_aura/desktop_window_tree_host_win.h" 14 15 namespace { 16 17 MONITORINFO GetMonitorInfoForMonitor(HMONITOR monitor) { 18 MONITORINFO monitor_info = { 0 }; 19 monitor_info.cbSize = sizeof(monitor_info); 20 GetMonitorInfo(monitor, &monitor_info); 21 return monitor_info; 22 } 23 24 gfx::Display GetDisplay(MONITORINFO& monitor_info) { 25 // TODO(oshima): Implement ID and Observer. 26 gfx::Display display(0, gfx::Rect(monitor_info.rcMonitor)); 27 display.set_work_area(gfx::Rect(monitor_info.rcWork)); 28 return display; 29 } 30 31 } // namespace 32 33 namespace views { 34 35 //////////////////////////////////////////////////////////////////////////////// 36 // DesktopScreenWin, public: 37 38 DesktopScreenWin::DesktopScreenWin() { 39 } 40 41 DesktopScreenWin::~DesktopScreenWin() { 42 } 43 44 //////////////////////////////////////////////////////////////////////////////// 45 // DesktopScreenWin, gfx::ScreenWin implementation: 46 47 bool DesktopScreenWin::IsDIPEnabled() { 48 return true; 49 } 50 51 gfx::Display DesktopScreenWin::GetDisplayMatching( 52 const gfx::Rect& match_rect) const { 53 return GetDisplayNearestPoint(match_rect.CenterPoint()); 54 } 55 56 HWND DesktopScreenWin::GetHWNDFromNativeView(gfx::NativeView window) const { 57 aura::WindowTreeHost* host = window->GetHost(); 58 return host ? host->GetAcceleratedWidget() : NULL; 59 } 60 61 gfx::NativeWindow DesktopScreenWin::GetNativeWindowFromHWND(HWND hwnd) const { 62 return (::IsWindow(hwnd)) ? 63 DesktopWindowTreeHostWin::GetContentWindowForHWND(hwnd) : NULL; 64 } 65 66 //////////////////////////////////////////////////////////////////////////////// 67 68 gfx::Screen* CreateDesktopScreen() { 69 return new DesktopScreenWin; 70 } 71 72 } // namespace views 73