From f6da3b43c291e2e73622bb55e68763d99b5b8a5f Mon Sep 17 00:00:00 2001 From: "trop[bot]" <37223003+trop[bot]@users.noreply.github.com> Date: Thu, 23 Sep 2021 19:48:42 +0900 Subject: [PATCH] fix: update Windows' cache after changing window's style (#31080) To enable/disable window resizing we set/unset WS_THICKFRAME style flag on the window. Window's frame styles are cached so we need to call SetWindowPos with the SWP_FRAMECHANGED flag set to update cache properly. Co-authored-by: Cezary Kulakowski --- shell/browser/native_window_views.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/shell/browser/native_window_views.cc b/shell/browser/native_window_views.cc index b2ad39ca6c101..31e147204d128 100644 --- a/shell/browser/native_window_views.cc +++ b/shell/browser/native_window_views.cc @@ -111,6 +111,11 @@ void FlipWindowStyle(HWND handle, bool on, DWORD flag) { else style &= ~flag; ::SetWindowLong(handle, GWL_STYLE, style); + // Window's frame styles are cached so we need to call SetWindowPos + // with the SWP_FRAMECHANGED flag to update cache properly. + ::SetWindowPos(handle, 0, 0, 0, 0, 0, // ignored + SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | + SWP_NOACTIVATE | SWP_NOOWNERZORDER); } gfx::Rect DIPToScreenRect(HWND hwnd, const gfx::Rect& pixel_bounds) {