Home | History | Annotate | Download | only in desktop_aura
      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