From 087591ff0090d0417dfda10968a0411caab4a7c0 Mon Sep 17 00:00:00 2001
From: Sine Striker <trueful@163.com>
Date: 周六, 23 12月 2023 16:43:42 +0800
Subject: [PATCH] Update document

---
 src/core/contexts/win32windowcontext.cpp |   83 ++++++++++++++++++++++-------------------
 1 files changed, 45 insertions(+), 38 deletions(-)

diff --git a/src/core/contexts/win32windowcontext.cpp b/src/core/contexts/win32windowcontext.cpp
index 27450d9..146ce65 100644
--- a/src/core/contexts/win32windowcontext.cpp
+++ b/src/core/contexts/win32windowcontext.cpp
@@ -715,12 +715,18 @@
         auto hWnd = reinterpret_cast<HWND>(winId);
 
 #if QWINDOWKIT_CONFIG(ENABLE_WINDOWS_SYSTEM_BORDER)
-        if (!isWin10OrGreater())
-#endif
-        {
+        if (!isWin10OrGreater()) {
             static constexpr const MARGINS margins = {1, 1, 1, 1};
             DynamicApis::instance().pDwmExtendFrameIntoClientArea(hWnd, &margins);
         }
+#else
+        {
+            static const MARGINS margins =
+                isWin10OrGreater() ? MARGINS{0, 0, 0, 0} : MARGINS{1, 1, 1, 1};
+            DynamicApis::instance().pDwmExtendFrameIntoClientArea(hWnd, &margins);
+        }
+#endif
+
 
         {
             auto style = ::GetWindowLongPtrW(hWnd, GWL_STYLE);
@@ -852,52 +858,53 @@
             }
             return true;
         } else if (key == QStringLiteral("acrylic-material")) {
-            if (!isWin10OrGreater()) {
+            if (!isWin11OrGreater()) {
                 return false;
             }
-            if (attribute.userType() == QMetaType::QColor) {
+            if (attribute.toBool()) {
                 // We need to extend the window frame into the whole client area to be able
                 // to see the blurred window background.
                 apis.pDwmExtendFrameIntoClientArea(hwnd, &extendMargins);
-                if (isWin11OrGreater()) {
-                    const _DWM_SYSTEMBACKDROP_TYPE backdropType = _DWMSBT_TRANSIENTWINDOW;
-                    apis.pDwmSetWindowAttribute(hwnd, _DWMWA_SYSTEMBACKDROP_TYPE, &backdropType,
-                                                sizeof(backdropType));
-                } else {
-                    auto gradientColor = attribute.value<QColor>();
 
-                    ACCENT_POLICY policy{};
-                    policy.dwAccentState = ACCENT_ENABLE_ACRYLICBLURBEHIND;
-                    policy.dwAccentFlags = ACCENT_ENABLE_ACRYLIC_WITH_LUMINOSITY;
-                    // This API expects the #AABBGGRR format.
-                    policy.dwGradientColor =
-                        DWORD(qRgba(gradientColor.blue(), gradientColor.green(),
-                                    gradientColor.red(), gradientColor.alpha()));
-                    WINDOWCOMPOSITIONATTRIBDATA wcad{};
-                    wcad.Attrib = WCA_ACCENT_POLICY;
-                    wcad.pvData = &policy;
-                    wcad.cbData = sizeof(policy);
-                    apis.pSetWindowCompositionAttribute(hwnd, &wcad);
-                }
+                const _DWM_SYSTEMBACKDROP_TYPE backdropType = _DWMSBT_TRANSIENTWINDOW;
+                apis.pDwmSetWindowAttribute(hwnd, _DWMWA_SYSTEMBACKDROP_TYPE, &backdropType,
+                                            sizeof(backdropType));
+
+                // PRIVATE API REFERENCE:
+                //     QColor gradientColor = {};
+                //     ACCENT_POLICY policy{};
+                //     policy.dwAccentState = ACCENT_ENABLE_ACRYLICBLURBEHIND;
+                //     policy.dwAccentFlags = ACCENT_ENABLE_ACRYLIC_WITH_LUMINOSITY;
+                //     // This API expects the #AABBGGRR format.
+                //     policy.dwGradientColor =
+                //         DWORD(qRgba(gradientColor.blue(), gradientColor.green(),
+                //                     gradientColor.red(), gradientColor.alpha()));
+                //     WINDOWCOMPOSITIONATTRIBDATA wcad{};
+                //     wcad.Attrib = WCA_ACCENT_POLICY;
+                //     wcad.pvData = &policy;
+                //     wcad.cbData = sizeof(policy);
+                //     apis.pSetWindowCompositionAttribute(hwnd, &wcad);
             } else {
-                if (isWin11OrGreater()) {
-                    const _DWM_SYSTEMBACKDROP_TYPE backdropType = _DWMSBT_AUTO;
-                    apis.pDwmSetWindowAttribute(hwnd, _DWMWA_SYSTEMBACKDROP_TYPE, &backdropType,
-                                                sizeof(backdropType));
-                } else {
-                    ACCENT_POLICY policy{};
-                    policy.dwAccentState = ACCENT_DISABLED;
-                    policy.dwAccentFlags = ACCENT_NONE;
-                    WINDOWCOMPOSITIONATTRIBDATA wcad{};
-                    wcad.Attrib = WCA_ACCENT_POLICY;
-                    wcad.pvData = &policy;
-                    wcad.cbData = sizeof(policy);
-                    apis.pSetWindowCompositionAttribute(hwnd, &wcad);
-                }
+                const _DWM_SYSTEMBACKDROP_TYPE backdropType = _DWMSBT_AUTO;
+                apis.pDwmSetWindowAttribute(hwnd, _DWMWA_SYSTEMBACKDROP_TYPE, &backdropType,
+                                            sizeof(backdropType));
+
+                // PRIVATE API REFERENCE:
+                //     ACCENT_POLICY policy{};
+                //     policy.dwAccentState = ACCENT_DISABLED;
+                //     policy.dwAccentFlags = ACCENT_NONE;
+                //     WINDOWCOMPOSITIONATTRIBDATA wcad{};
+                //     wcad.Attrib = WCA_ACCENT_POLICY;
+                //     wcad.pvData = &policy;
+                //     wcad.cbData = sizeof(policy);
+                //     apis.pSetWindowCompositionAttribute(hwnd, &wcad);
+
                 apis.pDwmExtendFrameIntoClientArea(hwnd, &defaultMargins);
             }
             return true;
         } else if (key == QStringLiteral("dwm-blur")) {
+            // TODO: Optimize
+            // Currently not available!!!
             if (attribute.toBool()) {
                 // We need to extend the window frame into the whole client area to be able
                 // to see the blurred window background.

--
Gitblit v1.9.1