Index: views/widget/monitor_win.cc |
diff --git a/views/widget/monitor_win.cc b/views/widget/monitor_win.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d840893e7f933d7781dc7c1edc627ec173016a1a |
--- /dev/null |
+++ b/views/widget/monitor_win.cc |
@@ -0,0 +1,37 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "views/widget/monitor_win.h" |
+ |
+#include <shellapi.h> |
+ |
+#include "base/logging.h" |
+#include "ui/gfx/rect.h" |
+ |
+namespace views { |
+ |
+gfx::Rect GetMonitorBoundsForRect(const gfx::Rect& rect) { |
+ RECT p_rect = rect.ToRECT(); |
+ HMONITOR monitor = MonitorFromRect(&p_rect, MONITOR_DEFAULTTONEAREST); |
+ if (monitor) { |
+ MONITORINFO mi = {0}; |
+ mi.cbSize = sizeof(mi); |
+ GetMonitorInfo(monitor, &mi); |
+ return gfx::Rect(mi.rcWork); |
+ } |
+ NOTREACHED(); |
+ return gfx::Rect(); |
+} |
+ |
+HWND GetTopmostAutoHideTaskbarForEdge(UINT edge, HMONITOR monitor) { |
+ APPBARDATA taskbar_data = { sizeof APPBARDATA, NULL, 0, edge }; |
+ HWND taskbar = reinterpret_cast<HWND>(SHAppBarMessage(ABM_GETAUTOHIDEBAR, |
+ &taskbar_data)); |
+ return (::IsWindow(taskbar) && (monitor != NULL) && |
+ (MonitorFromWindow(taskbar, MONITOR_DEFAULTTONULL) == monitor) && |
+ (GetWindowLong(taskbar, GWL_EXSTYLE) & WS_EX_TOPMOST)) ? |
+ taskbar : NULL; |
+} |
+ |
+} // namespace views |