From 1f0a21a25e61786ef3e8b3a20908e7631ad29c71 Mon Sep 17 00:00:00 2001 From: Marshall Greenblatt Date: Wed, 9 Nov 2022 13:13:16 -0500 Subject: [PATCH] win: Fix 1px gap with maximized frameless windows on Win11 (fixes issue #3414) --- patch/patch.cfg | 3 +++ patch/patches/views_widget.patch | 17 ++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/patch/patch.cfg b/patch/patch.cfg index c97822fa5..7c57849e7 100644 --- a/patch/patch.cfg +++ b/patch/patch.cfg @@ -118,6 +118,9 @@ patches = [ # Allow override of RWHVBase::GetNewScreenInfosForUpdate() which is now # required due to https://crrev.com/96938eb36e in order to use # RWHVBase::UpdateScreenInfo() with OSR. + # + # Windows: Fix 1px gap with maximized frameless windows on Win11. + # https://bitbucket.org/chromiumembedded/cef/issues/3414 'name': 'views_widget', }, { diff --git a/patch/patches/views_widget.patch b/patch/patches/views_widget.patch index d419a059c..49d9fe428 100644 --- a/patch/patches/views_widget.patch +++ b/patch/patches/views_widget.patch @@ -418,10 +418,21 @@ index d24c447bb8030..29215d6578169 100644 if (native_widget_delegate->IsDialogBox()) { *style |= DS_MODALFRAME; diff --git ui/views/win/hwnd_message_handler.cc ui/views/win/hwnd_message_handler.cc -index db731ec8ab093..f63db294d8480 100644 +index db731ec8ab093..f590ff6d99e85 100644 --- ui/views/win/hwnd_message_handler.cc +++ ui/views/win/hwnd_message_handler.cc -@@ -826,7 +826,11 @@ bool HWNDMessageHandler::IsVisible() const { +@@ -625,7 +625,9 @@ void HWNDMessageHandler::SetDwmFrameExtension(DwmFrameState state) { + if (!delegate_->HasFrame() && ui::win::IsAeroGlassEnabled() && + !is_translucent_) { + MARGINS m = {0, 0, 0, 0}; +- if (state == DwmFrameState::kOn) ++ // Fix 1px gap with frameless windows on Win11 by not setting DWM margins ++ // when maximized. See CEF issue #3414. ++ if (state == DwmFrameState::kOn && !IsMaximized()) + m = {0, 0, 1, 0}; + DwmExtendFrameIntoClientArea(hwnd(), &m); + } +@@ -826,7 +828,11 @@ bool HWNDMessageHandler::IsVisible() const { } bool HWNDMessageHandler::IsActive() const { @@ -434,7 +445,7 @@ index db731ec8ab093..f63db294d8480 100644 } bool HWNDMessageHandler::IsMinimized() const { -@@ -3224,10 +3228,13 @@ LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message, +@@ -3224,10 +3230,13 @@ LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message, } else if (event.type() == ui::ET_MOUSEWHEEL) { ui::MouseWheelEvent mouse_wheel_event(msg); // Reroute the mouse wheel to the window under the pointer if applicable.