Index: ui/views/win/hwnd_message_handler.h |
diff --git a/ui/views/win/hwnd_message_handler.h b/ui/views/win/hwnd_message_handler.h |
index 8a114ebee1be90095386ac833f8c4b6937830880..f011864177c071bcd83eacd9deb976754f1ead38 100644 |
--- a/ui/views/win/hwnd_message_handler.h |
+++ b/ui/views/win/hwnd_message_handler.h |
@@ -8,11 +8,13 @@ |
#include <windows.h> |
#include <stddef.h> |
+#include <map> |
#include <memory> |
#include <set> |
#include <vector> |
#include "base/compiler_specific.h" |
+#include "base/lazy_instance.h" |
#include "base/macros.h" |
#include "base/memory/weak_ptr.h" |
#include "base/strings/string16.h" |
@@ -517,6 +519,16 @@ class VIEWS_EXPORT HWNDMessageHandler : |
void SetBoundsInternal(const gfx::Rect& bounds_in_pixels, |
bool force_size_changed); |
+ // Checks if there is a full screen window on the same monitor as the |
+ // |window| which is becoming active. If yes then we reduce the size of the |
+ // fullscreen window by 1 px to ensure that maximized windows on the same |
+ // monitor don't draw over the taskbar. |
+ void CheckAndHandleBackgroundFullscreenOnMonitor(HWND window); |
+ |
+ // Provides functionality to reduce the bounds of the fullscreen window by 1 |
+ // px on activation loss to a window on the same monitor. |
+ void OnBackgroundFullscreen(); |
+ |
HWNDMessageHandlerDelegate* delegate_; |
std::unique_ptr<FullscreenHandler> fullscreen_handler_; |
@@ -651,6 +663,12 @@ class VIEWS_EXPORT HWNDMessageHandler : |
// fullscreen window which lost activation. Defaults to false. |
bool background_fullscreen_hack_; |
+ // This is a map of the HMONITOR to full screeen window instance. It is safe |
+ // to keep a raw pointer to the HWNDMessageHandler instance as we track the |
+ // window destruction and ensure that the map is cleaned up. |
+ using FullscreenWindowMonitorMap = std::map<HMONITOR, HWNDMessageHandler*>; |
+ static base::LazyInstance<FullscreenWindowMonitorMap> fullscreen_monitor_map_; |
+ |
// The WeakPtrFactories below must occur last in the class definition so they |
// get destroyed last. |