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 ®ion = *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 ®ion = *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