From 2f6c83c095724bbba0f43b2f2893ba73c17949a6 Mon Sep 17 00:00:00 2001
From: Zhao Yuhang <2546789017@qq.com>
Date: 周一, 11 12月 2023 21:57:40 +0800
Subject: [PATCH] add quick border

---
 src/core/contexts/win32windowcontext.cpp |   25 +++++++++++++++++++------
 1 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/src/core/contexts/win32windowcontext.cpp b/src/core/contexts/win32windowcontext.cpp
index 603079c..78a54c5 100644
--- a/src/core/contexts/win32windowcontext.cpp
+++ b/src/core/contexts/win32windowcontext.cpp
@@ -781,22 +781,22 @@
                 return;
             }
             case ShowSystemMenuHook: {
-                const auto &pos = *reinterpret_cast<const QPoint *>(data);
+                const auto &pos = *static_cast<const QPoint *>(data);
                 auto hWnd = reinterpret_cast<HWND>(m_windowHandle->winId());
                 showSystemMenu2(hWnd, qpoint2point(pos), false,
                                 m_delegate->isHostSizeFixed(m_host));
                 return;
             }
             case NeedsDrawBordersHook: {
-                auto &result = *reinterpret_cast<bool *>(data);
+                auto &result = *static_cast<bool *>(data);
                 result = isWin10OrGreater() && !isWin11OrGreater();
                 return;
             }
             case DrawBordersHook: {
-                auto args = reinterpret_cast<void **>(data);
-                auto &painter = *reinterpret_cast<QPainter *>(args[0]);
-                auto &rect = *reinterpret_cast<const QRect *>(args[1]);
-                auto &region = *reinterpret_cast<const QRegion *>(args[2]);
+                auto args = static_cast<void **>(data);
+                auto &painter = *static_cast<QPainter *>(args[0]);
+                const auto &rect = *static_cast<const QRect *>(args[1]);
+                const auto &region = *static_cast<const QRegion *>(args[2]);
                 const auto hwnd = reinterpret_cast<HWND>(m_windowHandle->winId());
                 QPen pen{};
                 const auto borderThickness = int(QHighDpi::fromNativePixels(getWindowFrameBorderThickness(hwnd), m_windowHandle));
@@ -827,6 +827,19 @@
                 painter.restore();
                 return;
             }
+            case QueryBorderThicknessHook: {
+                auto args = static_cast<void **>(data);
+                const bool requireNative = *static_cast<const bool *>(args[0]);
+                quint32 &thickness = *static_cast<quint32 *>(args[1]);
+                const auto hwnd = reinterpret_cast<HWND>(m_windowHandle->winId());
+                const auto nativeThickness = getWindowFrameBorderThickness(hwnd);
+                if (requireNative) {
+                    thickness = nativeThickness;
+                } else {
+                    thickness = QHighDpi::fromNativePixels(nativeThickness, m_windowHandle);
+                }
+                return;
+            }
             default: {
                 // unreachable
                 break;

--
Gitblit v1.9.1