Index: ui/views/win/hwnd_message_handler.cc |
diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc |
index 0cacffe4a76dfdde167943bf1f232f87736b9a76..aca31b8caa87c73cb301cde5480e5b02e69ecec4 100644 |
--- a/ui/views/win/hwnd_message_handler.cc |
+++ b/ui/views/win/hwnd_message_handler.cc |
@@ -1330,6 +1330,8 @@ void HWNDMessageHandler::OnDestroy() { |
void HWNDMessageHandler::OnDisplayChange(UINT bits_per_pixel, |
const gfx::Size& screen_size) { |
delegate_->HandleDisplayChange(); |
+ // Force a WM_NCCALCSIZE to occur to ensure that we handle auto hide |
+ // taskbars correctly. |
SendFrameChanged(); |
} |
@@ -1988,6 +1990,13 @@ void HWNDMessageHandler::OnSettingChange(UINT flags, const wchar_t* section) { |
delegate_->HandleWorkAreaChanged(); |
SetMsgHandled(FALSE); |
} |
+ |
+ // If the work area is changing, then it could be as a result of the taskbar |
+ // broadcasting the WM_SETTINGCHANGE message due to changes in auto hide |
+ // settings, etc. Force a WM_NCCALCSIZE to occur to ensure that we handle |
+ // this correctly. |
+ if (flags == SPI_SETWORKAREA) |
+ SendFrameChanged(); |
} |
void HWNDMessageHandler::OnSize(UINT param, const gfx::Size& size) { |