From 921dbf5719c9b734fbd26d7b6300e29c943093f3 Mon Sep 17 00:00:00 2001 From: SineStriker <55847490+SineStriker@users.noreply.github.com> Date: 周二, 11 3月 2025 19:54:51 +0800 Subject: [PATCH] update --- src/core/contexts/win32windowcontext.cpp | 24 +++++++++++++----------- 1 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/core/contexts/win32windowcontext.cpp b/src/core/contexts/win32windowcontext.cpp index 3360b9d..fa2b53f 100644 --- a/src/core/contexts/win32windowcontext.cpp +++ b/src/core/contexts/win32windowcontext.cpp @@ -37,6 +37,14 @@ # error Current Qt version has a critical bug which will break QWK functionality. Please upgrade to > 6.6.1 or downgrade to < 6.6.0 #endif +#ifndef DWM_BB_ENABLE +# define DWM_BB_ENABLE 0x00000001 +#endif + +#ifndef ABM_GETAUTOHIDEBAREX +# define ABM_GETAUTOHIDEBAREX 0x0000000b +#endif + namespace QWK { enum IconButtonClickLevelFlag { @@ -916,19 +924,12 @@ Q_UNUSED(oldAttribute) const auto hwnd = reinterpret_cast<HWND>(m_windowId); - if (!hwnd) { - return false; - } + Q_ASSERT(hwnd); const DynamicApis &apis = DynamicApis::instance(); const auto &extendMargins = [this, &apis, hwnd]() { - // For some unknown reason, the window background is totally black when the host object - // is a QWidget. And extending the window frame into the client area seems to fix it - // magically. - // We don't need the following *HACK* for QtQuick windows. - if (!m_host->isWidgetType()) { - return; - } + // For some unknown reason, the window background is totally black and extending + // the window frame into the client area seems to fix it magically. // After many times of trying, we found that the Acrylic/Mica/Mica Alt background // only appears on the native Win32 window's background, so naturally we want to // extend the window frame into the whole client area to be able to let the special @@ -957,6 +958,7 @@ const auto &effectBugWorkaround = [this, hwnd]() { // We don't need the following *HACK* for QWidget windows. + // Completely based on actual experiments, root reason is totally unknown. if (m_host->isWidgetType()) { return; } @@ -2327,7 +2329,7 @@ if (!mouseHook) { mouseHook = ::SetWindowsHookExW( WH_MOUSE, - [](int nCode, WPARAM wParam, LPARAM lParam) { + [](int nCode, WPARAM wParam, LPARAM lParam) -> LRESULT WINAPI { if (nCode >= 0) { switch (wParam) { case WM_LBUTTONDBLCLK: -- Gitblit v1.9.1