From a3bcd2fac415dba704f787df5523da7400c74b42 Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 10 Feb 2023 20:32:06 +0400 Subject: [PATCH] Fix rounding for maximized translucent windows. --- ui/platform/win/ui_window_win.cpp | 12 +++++++++++- ui/platform/win/ui_window_win.h | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ui/platform/win/ui_window_win.cpp b/ui/platform/win/ui_window_win.cpp index da05e37..3206df8 100644 --- a/ui/platform/win/ui_window_win.cpp +++ b/ui/platform/win/ui_window_win.cpp @@ -274,7 +274,9 @@ void WindowHelper::updateCornersRounding() { if (!::Platform::IsWindows11OrGreater()) { return; } - auto preference = _isFullScreen ? kDWMWCP_DONOTROUND : kDWMWCP_ROUND; + const auto preference = (_isFullScreen || _isMaximizedAndTranslucent) + ? kDWMWCP_DONOTROUND + : kDWMWCP_ROUND; DwmSetWindowAttribute( _handle, kDWMWA_WINDOW_CORNER_PREFERENCE, @@ -372,6 +374,14 @@ void WindowHelper::init() { window()->windowState() & ~Qt::WindowMaximized); }); } + if (state != Qt::WindowMinimized) { + const auto is = (state == Qt::WindowMaximized) + && window()->testAttribute(Qt::WA_TranslucentBackground); + if (_isMaximizedAndTranslucent != is) { + _isMaximizedAndTranslucent = is; + updateCornersRounding(); + } + } }; Ui::Connect( window()->windowHandle(), diff --git a/ui/platform/win/ui_window_win.h b/ui/platform/win/ui_window_win.h index d3ec58d..d29fc11 100644 --- a/ui/platform/win/ui_window_win.h +++ b/ui/platform/win/ui_window_win.h @@ -83,6 +83,7 @@ private: QMargins _marginsDelta; bool _updatingMargins = false; bool _isFullScreen = false; + bool _isMaximizedAndTranslucent = false; };