From 68462706e23a358c4193d2d30227698d0172f0ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E5=AD=90=E6=A5=9A=5Czhuzi?= Date: Fri, 21 Jun 2024 11:28:06 +0800 Subject: [PATCH] fix bug --- example/example_en_US.ts | 50 ++++++++++++++++++++-------------------- example/example_zh_CN.ts | 50 ++++++++++++++++++++-------------------- src/FluFrameless.cpp | 42 +++------------------------------ 3 files changed, 53 insertions(+), 89 deletions(-) diff --git a/example/example_en_US.ts b/example/example_en_US.ts index b7dffc04..17a31341 100644 --- a/example/example_en_US.ts +++ b/example/example_en_US.ts @@ -607,104 +607,104 @@ MainWindow - - + + Quit - + Are you sure you want to exit the program? - + Minimize - + Friendly Reminder - + FluentUI is hidden from the tray, click on the tray to activate the window again - - + + Cancel - + Open in Separate Window - + Click Time - + Search - + Finish - + Next - + Previous - + Dark Mode - + Here you can switch to night mode. - + Hide Easter eggs - + Try a few more clicks!! - + Upgrade Tips - + FluentUI is currently up to date - + -- The current app version - + Now go and download the new version? @@ -713,17 +713,17 @@ Updated content: - + OK - + The current version is already the latest - + The network is abnormal diff --git a/example/example_zh_CN.ts b/example/example_zh_CN.ts index e3d646f7..d350e30c 100644 --- a/example/example_zh_CN.ts +++ b/example/example_zh_CN.ts @@ -611,104 +611,104 @@ MainWindow - + Dark Mode 夜间模式 - - + + Quit 退出 - + Are you sure you want to exit the program? 您确定要退出程序吗 - + Minimize 最小化 - + Friendly Reminder 友情提示 - + FluentUI is hidden from the tray, click on the tray to activate the window again FluentUI 在托盘中处于隐藏状态,单击托盘以再次激活窗口 - - + + Cancel 取消 - + Open in Separate Window 在独立窗口中打开 - + Click Time 点击次数 - + Search 搜索 - + Finish 完成 - + Next 下一步 - + Previous 上一步 - + Here you can switch to night mode. 在这里,您可以切换到夜间模式。 - + Hide Easter eggs 隐藏彩蛋 - + Try a few more clicks!! 再试几下!! - + Upgrade Tips 升级提示 - + FluentUI is currently up to date FluentUI 目前最新版本 - + -- The current app version -- 当前应用版本 - + Now go and download the new version? @@ -721,17 +721,17 @@ Updated content: - + OK 确定 - + The current version is already the latest 当前版本已经是最新版本 - + The network is abnormal 网络异常 diff --git a/src/FluFrameless.cpp b/src/FluFrameless.cpp index 1e9551f2..b87558a0 100644 --- a/src/FluFrameless.cpp +++ b/src/FluFrameless.cpp @@ -105,22 +105,14 @@ void FluFrameless::componentComplete() { HWND hwnd = reinterpret_cast(window()->winId()); DWORD style = ::GetWindowLongPtr(hwnd, GWL_STYLE); if (_fixSize) { -#if (QT_VERSION == QT_VERSION_CHECK(6, 5, 3) || QT_VERSION == QT_VERSION_CHECK(6, 6, 0)) ::SetWindowLongPtr(hwnd, GWL_STYLE, style | WS_THICKFRAME);; -#else - ::SetWindowLongPtr(hwnd, GWL_STYLE, style | WS_THICKFRAME | WS_CAPTION); -#endif for (int i = 0; i <= QGuiApplication::screens().count() - 1; ++i) { connect(QGuiApplication::screens().at(i), &QScreen::logicalDotsPerInchChanged, this, [=] { SetWindowPos(hwnd, nullptr, 0, 0, 0, 0, SWP_NOZORDER | SWP_NOOWNERZORDER | SWP_NOMOVE | SWP_FRAMECHANGED); }); } } else { -#if (QT_VERSION == QT_VERSION_CHECK(6, 5, 3) || QT_VERSION == QT_VERSION_CHECK(6, 6, 0)) ::SetWindowLongPtr(hwnd, GWL_STYLE, style | WS_MAXIMIZEBOX | WS_THICKFRAME); -#else - ::SetWindowLongPtr(hwnd, GWL_STYLE, style | WS_MAXIMIZEBOX | WS_THICKFRAME | WS_CAPTION); -#endif } SetWindowPos(hwnd, nullptr, 0, 0, 0, 0, SWP_NOZORDER | SWP_NOOWNERZORDER | SWP_NOMOVE | SWP_NOSIZE | SWP_FRAMECHANGED); connect(window(), &QQuickWindow::screenChanged, this, [hwnd] { @@ -173,38 +165,20 @@ void FluFrameless::componentComplete() { } return false; } else if (uMsg == WM_NCCALCSIZE && wParam == TRUE) { - const auto clientRect = &(reinterpret_cast(lParam))->rgrc[0]; + const auto clientRect = ((wParam == FALSE) ? reinterpret_cast(lParam) : &(reinterpret_cast(lParam))->rgrc[0]); const LONG originalTop = clientRect->top; const LONG originalLeft = clientRect->left; - const LONG originalBottom = clientRect->bottom; const LONG originalRight = clientRect->right; + const LONG originalBottom = clientRect->bottom; const LRESULT hitTestResult = ::DefWindowProcW(hwnd, WM_NCCALCSIZE, wParam, lParam); if ((hitTestResult != HTERROR) && (hitTestResult != HTNOWHERE)) { - *result = static_cast(hitTestResult); + *result = hitTestResult; return true; } -#if (QT_VERSION == QT_VERSION_CHECK(6, 5, 3) || QT_VERSION == QT_VERSION_CHECK(6, 6, 0)) clientRect->top = originalTop; clientRect->bottom = originalBottom; clientRect->left = originalLeft; clientRect->right = originalRight; -#else - bool isMaximum = ::IsZoomed(hwnd); - if (isMaximum) { - auto geometry = window()->screen()->geometry(); - auto offsetX = qAbs(geometry.left() - originalLeft); - auto offsetY = qAbs(geometry.top() - originalTop); - clientRect->top = originalTop + offsetY; - clientRect->bottom = originalBottom - offsetY; - clientRect->left = originalLeft + offsetX; - clientRect->right = originalRight - offsetX; - } else { - clientRect->top = originalTop; - clientRect->bottom = originalBottom; - clientRect->left = originalLeft; - clientRect->right = originalRight; - } -#endif _setMaximizeHovered(false); *result = WVR_REDRAW; return true; @@ -262,21 +236,12 @@ void FluFrameless::componentComplete() { *result = HTCLIENT; return true; } else if (uMsg == WM_NCPAINT) { -#if (QT_VERSION == QT_VERSION_CHECK(6, 5, 3) || QT_VERSION == QT_VERSION_CHECK(6, 6, 0)) *result = FALSE; return true; -#else - if (isCompositionEnabled()) { - return false; - } - *result = FALSE; - return true; -#endif } else if (uMsg == WM_NCACTIVATE) { *result = TRUE; return true; } else if (uMsg == WM_GETMINMAXINFO) { -#if (QT_VERSION == QT_VERSION_CHECK(6, 5, 3) || QT_VERSION == QT_VERSION_CHECK(6, 6, 0)) auto *minmaxInfo = reinterpret_cast(lParam); auto pixelRatio = window()->devicePixelRatio(); auto geometry = window()->screen()->availableGeometry(); @@ -286,7 +251,6 @@ void FluFrameless::componentComplete() { minmaxInfo->ptMaxPosition.y = rect.top; minmaxInfo->ptMaxSize.x = qRound(geometry.width() * pixelRatio); minmaxInfo->ptMaxSize.y = qRound(geometry.height() * pixelRatio); -#endif return false; } else if (_isWindows11OrGreater && (uMsg == WM_NCLBUTTONDBLCLK || uMsg == WM_NCLBUTTONDOWN)) { if (_hitMaximizeButton()) {