summaryrefslogtreecommitdiffstats
path: root/views/window
diff options
context:
space:
mode:
authorpkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-24 18:04:08 +0000
committerpkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-24 18:04:08 +0000
commitdf6d7777e48c1136c745e40e745fe5e5f3513ff4 (patch)
tree3a854cd4b214b123ec794ce3dcab783a11d9930b /views/window
parent09a362d359bce661c21ebf92342fae61e8d4558a (diff)
downloadchromium_src-df6d7777e48c1136c745e40e745fe5e5f3513ff4.zip
chromium_src-df6d7777e48c1136c745e40e745fe5e5f3513ff4.tar.gz
chromium_src-df6d7777e48c1136c745e40e745fe5e5f3513ff4.tar.bz2
Reapply the change from r8062 to fix the Windows Classic maximized window region, which I inexplicably removed in r10845.
Without this fix, a maximized Chrome window on one monitor "bleeds over" into adjacent monitors in Windows Classic mode, creating a narrow strip where nothing ever redraws damaged pixels. BUG=none TEST=none Review URL: http://codereview.chromium.org/211058 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27091 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/window')
-rw-r--r--views/window/window_win.cc19
1 files changed, 15 insertions, 4 deletions
diff --git a/views/window/window_win.cc b/views/window/window_win.cc
index bae6fde..27ff3df 100644
--- a/views/window/window_win.cc
+++ b/views/window/window_win.cc
@@ -1280,10 +1280,21 @@ void WindowWin::ResetWindowRegion(bool force) {
CRect window_rect;
GetWindowRect(&window_rect);
HRGN new_region;
- gfx::Path window_mask;
- non_client_view_->GetWindowMask(
- gfx::Size(window_rect.Width(), window_rect.Height()), &window_mask);
- new_region = window_mask.CreateHRGN();
+ if (IsMaximized()) {
+ HMONITOR monitor =
+ MonitorFromWindow(GetNativeView(), MONITOR_DEFAULTTONEAREST);
+ MONITORINFO mi;
+ mi.cbSize = sizeof mi;
+ GetMonitorInfo(monitor, &mi);
+ CRect work_rect = mi.rcWork;
+ work_rect.OffsetRect(-window_rect.left, -window_rect.top);
+ new_region = CreateRectRgnIndirect(&work_rect);
+ } else {
+ gfx::Path window_mask;
+ non_client_view_->GetWindowMask(
+ gfx::Size(window_rect.Width(), window_rect.Height()), &window_mask);
+ new_region = window_mask.CreateHRGN();
+ }
if (current_rgn_result == ERROR || !EqualRgn(current_rgn, new_region)) {
// SetWindowRgn takes ownership of the HRGN created by CreateHRGN.