forked from github_mirror/framelesshelper
win: refactor & simplify
Signed-off-by: Yuhang Zhao <2546789017@qq.com>
This commit is contained in:
parent
f97f000cc7
commit
07101273bd
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (C) 2022 by wangwenx190 (Yuhang Zhao)
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "framelesshelpercore_global.h"
|
||||
|
||||
FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||
|
||||
namespace WindowsVersionHelper
|
||||
{
|
||||
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin2KOrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWinXPOrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWinXP64OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWinVistaOrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWinVistaSP1OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWinVistaSP2OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin7OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin7SP1OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin8OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin8Point1OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin8Point1Update1OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin10OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin10TH1OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin10TH2OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin10RS1OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin10RS2OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin10RS3OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin10RS4OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin10RS5OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin1019H1OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin1019H2OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin1020H1OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin1020H2OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin21H1OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin21H2OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin11OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin1121H2OrGreater();
|
||||
[[nodiscard]] FRAMELESSHELPER_CORE_API bool isWin1122H2OrGreater();
|
||||
|
||||
} // namespace WindowsVersionHelper
|
||||
|
||||
FRAMELESSHELPER_END_NAMESPACE
|
|
@ -30,7 +30,6 @@ HEADERS += \
|
|||
$$CORE_PRIV_INC_DIR/framelessconfig_p.h \
|
||||
$$CORE_PRIV_INC_DIR/framelessmanager_p.h \
|
||||
$$CORE_PRIV_INC_DIR/micamaterial_p.h \
|
||||
$$CORE_PRIV_INC_DIR/registrykey_p.h \
|
||||
$$CORE_PRIV_INC_DIR/sysapiloader_p.h
|
||||
|
||||
SOURCES += \
|
||||
|
@ -40,7 +39,6 @@ SOURCES += \
|
|||
$$CORE_SRC_DIR/framelessmanager.cpp \
|
||||
$$CORE_SRC_DIR/framelesshelpercore_global.cpp \
|
||||
$$CORE_SRC_DIR/micamaterial.cpp \
|
||||
$$CORE_SRC_DIR/registrykey.cpp \
|
||||
$$CORE_SRC_DIR/sysapiloader.cpp \
|
||||
$$CORE_SRC_DIR/utils.cpp
|
||||
|
||||
|
@ -50,10 +48,14 @@ RESOURCES += \
|
|||
win32 {
|
||||
HEADERS += \
|
||||
$$CORE_PUB_INC_DIR/framelesshelper_win.h \
|
||||
$$CORE_PUB_INC_DIR/framelesshelper_windows.h
|
||||
$$CORE_PUB_INC_DIR/framelesshelper_windows.h \
|
||||
$$CORE_PRIV_INC_DIR/registrykey_p.h \
|
||||
$$CORE_PRIV_INC_DIR/winverhelper_p.h
|
||||
SOURCES += \
|
||||
$$CORE_SRC_DIR/framelesshelper_win.cpp \
|
||||
$$CORE_SRC_DIR/utils_win.cpp
|
||||
$$CORE_SRC_DIR/utils_win.cpp \
|
||||
$$CORE_SRC_DIR/registrykey.cpp \
|
||||
$$CORE_SRC_DIR/winverhelper.cpp
|
||||
LIBS += -luser32 -lgdi32
|
||||
}
|
||||
|
||||
|
|
|
@ -86,11 +86,13 @@ if(WIN32)
|
|||
)
|
||||
list(APPEND PRIVATE_HEADERS
|
||||
${INCLUDE_PREFIX}/private/registrykey_p.h
|
||||
${INCLUDE_PREFIX}/private/winverhelper_p.h
|
||||
)
|
||||
list(APPEND SOURCES
|
||||
registrykey.cpp
|
||||
utils_win.cpp
|
||||
framelesshelper_win.cpp
|
||||
winverhelper.cpp
|
||||
)
|
||||
elseif(APPLE)
|
||||
list(APPEND SOURCES utils_mac.mm)
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
#include "framelessmanager_p.h"
|
||||
#include "framelessconfig_p.h"
|
||||
#include "utils.h"
|
||||
#include "winverhelper_p.h"
|
||||
#include "framelesshelper_windows.h"
|
||||
#include <optional>
|
||||
|
||||
|
@ -392,8 +393,7 @@ Q_GLOBAL_STATIC(Win32Helper, g_win32Helper)
|
|||
if (!parentWindowId) {
|
||||
return false;
|
||||
}
|
||||
static const bool isWin10OrGreater = Utils::isWindowsVersionOrGreater(WindowsVersion::_10_1507);
|
||||
if (!isWin10OrGreater) {
|
||||
if (!WindowsVersionHelper::isWin10OrGreater()) {
|
||||
WARNING << "The fallback title bar window is only supported on Windows 10 and onwards.";
|
||||
return false;
|
||||
}
|
||||
|
@ -522,22 +522,19 @@ void FramelessHelperWin::addWindow(const SystemParameters ¶ms)
|
|||
Utils::updateWindowFrameMargins(windowId, false);
|
||||
// Tell DWM we don't use the window icon/caption/sysmenu, don't draw them.
|
||||
Utils::disableOriginalTitleBarFunctionalities(windowId);
|
||||
static const bool isWin10RS1OrGreater = Utils::isWindowsVersionOrGreater(WindowsVersion::_10_1607);
|
||||
if (isWin10RS1OrGreater) {
|
||||
if (WindowsVersionHelper::isWin10RS1OrGreater()) {
|
||||
// Tell DWM we may need dark theme non-client area (title bar & frame border).
|
||||
FramelessHelper::Core::setApplicationOSThemeAware();
|
||||
const bool dark = Utils::shouldAppsUseDarkMode();
|
||||
Utils::updateWindowFrameBorderColor(windowId, dark);
|
||||
static const bool isWin10RS5OrGreater = Utils::isWindowsVersionOrGreater(WindowsVersion::_10_1809);
|
||||
if (isWin10RS5OrGreater) {
|
||||
if (WindowsVersionHelper::isWin10RS5OrGreater()) {
|
||||
static const bool isQtQuickApplication = (params.getCurrentApplicationType() == ApplicationType::Quick);
|
||||
if (isQtQuickApplication) {
|
||||
// Tell UXTheme we may need dark theme controls.
|
||||
// Causes some QtWidgets paint incorrectly, so only apply to Qt Quick applications.
|
||||
Utils::updateGlobalWin32ControlsTheme(windowId, dark);
|
||||
}
|
||||
static const bool isWin11OrGreater = Utils::isWindowsVersionOrGreater(WindowsVersion::_11_21H2);
|
||||
if (isWin11OrGreater) {
|
||||
if (WindowsVersionHelper::isWin11OrGreater()) {
|
||||
const FramelessConfig * const config = FramelessConfig::instance();
|
||||
// Set the frame corner style, only Win11 provides official public API to do it.
|
||||
// On Win7~Win10, you'll need to use SetWindowRgn(), which will break the frame shadow.
|
||||
|
@ -772,8 +769,7 @@ bool FramelessHelperWin::nativeEventFilter(const QByteArray &eventType, void *me
|
|||
// Due to ABM_GETAUTOHIDEBAREX was introduced in Windows 8.1,
|
||||
// we have to use another way to judge this if we are running
|
||||
// on Windows 7 or Windows 8.
|
||||
static const bool isWin8Point1OrGreater = Utils::isWindowsVersionOrGreater(WindowsVersion::_8_1);
|
||||
if (isWin8Point1OrGreater) {
|
||||
if (WindowsVersionHelper::isWin8Point1OrGreater()) {
|
||||
MONITORINFO monitorInfo;
|
||||
SecureZeroMemory(&monitorInfo, sizeof(monitorInfo));
|
||||
monitorInfo.cbSize = sizeof(monitorInfo);
|
||||
|
@ -1165,8 +1161,7 @@ bool FramelessHelperWin::nativeEventFilter(const QByteArray &eventType, void *me
|
|||
break;
|
||||
}
|
||||
}
|
||||
static const bool isWin11OrGreater = Utils::isWindowsVersionOrGreater(WindowsVersion::_11_21H2);
|
||||
if (isWin11OrGreater && data.fallbackTitleBarWindowId) {
|
||||
if (WindowsVersionHelper::isWin11OrGreater() && data.fallbackTitleBarWindowId) {
|
||||
switch (uMsg) {
|
||||
case WM_SIZE: // Sent to a window after its size has changed.
|
||||
case WM_DISPLAYCHANGE: // Sent to a window when the display resolution has changed.
|
||||
|
@ -1183,8 +1178,7 @@ bool FramelessHelperWin::nativeEventFilter(const QByteArray &eventType, void *me
|
|||
const bool wallpaperChanged = ((uMsg == WM_SETTINGCHANGE) && (wParam == SPI_SETDESKWALLPAPER));
|
||||
bool systemThemeChanged = ((uMsg == WM_THEMECHANGED) || (uMsg == WM_SYSCOLORCHANGE)
|
||||
|| (uMsg == WM_DWMCOLORIZATIONCOLORCHANGED));
|
||||
static const bool isWin10RS1OrGreater = Utils::isWindowsVersionOrGreater(WindowsVersion::_10_1607);
|
||||
if (isWin10RS1OrGreater) {
|
||||
if (WindowsVersionHelper::isWin10RS1OrGreater()) {
|
||||
if (uMsg == WM_SETTINGCHANGE) {
|
||||
if ((wParam == 0) && (lParam != 0) // lParam sometimes may be NULL.
|
||||
&& (std::wcscmp(reinterpret_cast<LPCWSTR>(lParam), kThemeSettingChangeEventName) == 0)) {
|
||||
|
@ -1193,8 +1187,7 @@ bool FramelessHelperWin::nativeEventFilter(const QByteArray &eventType, void *me
|
|||
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
|
||||
Utils::updateWindowFrameBorderColor(windowId, dark);
|
||||
#endif
|
||||
static const bool isWin10RS5OrGreater = Utils::isWindowsVersionOrGreater(WindowsVersion::_10_1809);
|
||||
if (isWin10RS5OrGreater) {
|
||||
if (WindowsVersionHelper::isWin10RS5OrGreater()) {
|
||||
static const bool isQtQuickApplication = (data.params.getCurrentApplicationType() == ApplicationType::Quick);
|
||||
if (isQtQuickApplication) {
|
||||
// Causes some QtWidgets paint incorrectly, so only apply to Qt Quick applications.
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
#include "utils.h"
|
||||
#ifdef Q_OS_WINDOWS
|
||||
# include "framelesshelper_win.h"
|
||||
# include "winverhelper_p.h"
|
||||
#endif
|
||||
|
||||
// The "Q_INIT_RESOURCE()" macro can't be used within a namespace,
|
||||
|
@ -89,12 +90,10 @@ FRAMELESSHELPER_STRING_CONSTANT2(IconFontFamilyName_common, "micon_nb")
|
|||
{
|
||||
static const QString result = []() -> QString {
|
||||
#ifdef Q_OS_WINDOWS
|
||||
static const bool isWin11OrGreater = Utils::isWindowsVersionOrGreater(WindowsVersion::_11_21H2);
|
||||
if (isWin11OrGreater) {
|
||||
if (WindowsVersionHelper::isWin11OrGreater()) {
|
||||
return kIconFontFamilyName_win11;
|
||||
}
|
||||
static const bool isWin10OrGreater = Utils::isWindowsVersionOrGreater(WindowsVersion::_10_1507);
|
||||
if (isWin10OrGreater) {
|
||||
if (WindowsVersionHelper::isWin10OrGreater()) {
|
||||
return kIconFontFamilyName_win10;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
#include "framelessconfig_p.h"
|
||||
#include "sysapiloader_p.h"
|
||||
#include "registrykey_p.h"
|
||||
#include "winverhelper_p.h"
|
||||
#include <uxtheme.h>
|
||||
#include <d2d1.h>
|
||||
|
||||
|
@ -390,8 +391,7 @@ struct SYSTEM_METRIC
|
|||
return titleBarHeight;
|
||||
}
|
||||
const int frameSizeY = Utils::getResizeBorderThickness(windowId, false, true);
|
||||
static const bool isWin11OrGreater = Utils::isWindowsVersionOrGreater(WindowsVersion::_11_21H2);
|
||||
if (isWin11OrGreater) {
|
||||
if (WindowsVersionHelper::isWin11OrGreater()) {
|
||||
if (maxOrFull) {
|
||||
return (titleBarHeight + frameSizeY);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,203 @@
|
|||
/*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (C) 2022 by wangwenx190 (Yuhang Zhao)
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "winverhelper_p.h"
|
||||
#include "utils.h"
|
||||
|
||||
FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||
|
||||
using namespace Global;
|
||||
|
||||
namespace WindowsVersionHelper
|
||||
{
|
||||
|
||||
bool isWin2KOrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_2000);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWinXPOrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_XP);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWinXP64OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_XP_64);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWinVistaOrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_Vista);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWinVistaSP1OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_Vista_SP1);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWinVistaSP2OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_Vista_SP2);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWin7OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_7);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWin7SP1OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_7_SP1);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWin8OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_8);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWin8Point1OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_8_1);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWin8Point1Update1OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_8_1_Update1);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWin10OrGreater()
|
||||
{
|
||||
return isWin10TH1OrGreater();
|
||||
}
|
||||
|
||||
bool isWin10TH1OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_10_1507);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWin10TH2OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_10_1511);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWin10RS1OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_10_1607);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWin10RS2OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_10_1703);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWin10RS3OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_10_1709);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWin10RS4OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_10_1803);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWin10RS5OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_10_1809);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWin1019H1OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_10_1903);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWin1019H2OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_10_1909);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWin1020H1OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_10_2004);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWin1020H2OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_10_20H2);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWin21H1OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_10_21H1);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWin21H2OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_10_21H2);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWin11OrGreater()
|
||||
{
|
||||
return isWin1121H2OrGreater();
|
||||
}
|
||||
|
||||
bool isWin1121H2OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_11_21H2);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool isWin1122H2OrGreater()
|
||||
{
|
||||
static const bool result = Utils::isWindowsVersionOrGreater(WindowsVersion::_11_22H2);
|
||||
return result;
|
||||
}
|
||||
|
||||
} // namespace WindowsVersionHelper
|
||||
|
||||
FRAMELESSHELPER_END_NAMESPACE
|
|
@ -0,0 +1 @@
|
|||
#include "../../include/FramelessHelper/Core/private/winverhelper_p.h"
|
|
@ -39,6 +39,9 @@
|
|||
#include <framelessmanager.h>
|
||||
#include <framelessconfig_p.h>
|
||||
#include <utils.h>
|
||||
#ifdef Q_OS_WINDOWS
|
||||
# include <winverhelper_p.h>
|
||||
#endif // Q_OS_WINDOWS
|
||||
|
||||
FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||
|
||||
|
@ -562,21 +565,20 @@ bool FramelessQuickHelperPrivate::eventFilter(QObject *object, QEvent *event)
|
|||
}
|
||||
const auto window = qobject_cast<QQuickWindow *>(object);
|
||||
const WId windowId = window->winId();
|
||||
static const bool isWin11OrGreater = Utils::isWindowsVersionOrGreater(WindowsVersion::_11_21H2);
|
||||
const bool roundCorner = FramelessConfig::instance()->isSet(Option::WindowUseRoundCorners);
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0))
|
||||
if (Utils::windowStatesToWindowState(window->windowStates()) == Qt::WindowFullScreen) {
|
||||
#else
|
||||
if (window->windowState() == Qt::WindowFullScreen) {
|
||||
#endif
|
||||
if (isWin11OrGreater && roundCorner) {
|
||||
if (WindowsVersionHelper::isWin11OrGreater() && roundCorner) {
|
||||
Utils::forceSquareCornersForWindow(windowId, true);
|
||||
}
|
||||
} else {
|
||||
const auto changeEvent = static_cast<QWindowStateChangeEvent *>(event);
|
||||
if (Utils::windowStatesToWindowState(changeEvent->oldState()) == Qt::WindowFullScreen) {
|
||||
Utils::maybeFixupQtInternals(windowId);
|
||||
if (isWin11OrGreater && roundCorner) {
|
||||
if (WindowsVersionHelper::isWin11OrGreater() && roundCorner) {
|
||||
Utils::forceSquareCornersForWindow(windowId, false);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,6 +25,9 @@
|
|||
#include "framelessquickutils.h"
|
||||
#include <framelessmanager.h>
|
||||
#include <utils.h>
|
||||
#ifdef Q_OS_WINDOWS
|
||||
# include <winverhelper_p.h>
|
||||
#endif // Q_OS_WINDOWS
|
||||
|
||||
FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||
|
||||
|
@ -55,8 +58,7 @@ qreal FramelessQuickUtils::titleBarHeight() const
|
|||
bool FramelessQuickUtils::frameBorderVisible() const
|
||||
{
|
||||
#ifdef Q_OS_WINDOWS
|
||||
static const bool isWin11OrGreater = Utils::isWindowsVersionOrGreater(WindowsVersion::_11_21H2);
|
||||
return (Utils::isWindowFrameBorderVisible() && !isWin11OrGreater);
|
||||
return (Utils::isWindowFrameBorderVisible() && !WindowsVersionHelper::isWin11OrGreater());
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
|
|
|
@ -31,6 +31,9 @@
|
|||
#include <QtQuick/private/qquickanchors_p.h>
|
||||
#include <framelessmanager.h>
|
||||
#include <utils.h>
|
||||
#ifdef Q_OS_WINDOWS
|
||||
# include <winverhelper_p.h>
|
||||
#endif // Q_OS_WINDOWS
|
||||
|
||||
FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||
|
||||
|
@ -193,8 +196,7 @@ void FramelessQuickWindowPrivate::initialize()
|
|||
bool FramelessQuickWindowPrivate::shouldDrawFrameBorder() const
|
||||
{
|
||||
#ifdef Q_OS_WINDOWS
|
||||
static const bool isWin11OrGreater = Utils::isWindowsVersionOrGreater(WindowsVersion::_11_21H2);
|
||||
return (Utils::isWindowFrameBorderVisible() && !isWin11OrGreater);
|
||||
return (Utils::isWindowFrameBorderVisible() && !WindowsVersionHelper::isWin11OrGreater());
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
|
|
|
@ -32,6 +32,9 @@
|
|||
#include <micamaterial.h>
|
||||
#include <micamaterial_p.h>
|
||||
#include <utils.h>
|
||||
#ifdef Q_OS_WINDOWS
|
||||
# include <winverhelper_p.h>
|
||||
#endif // Q_OS_WINDOWS
|
||||
|
||||
FRAMELESSHELPER_BEGIN_NAMESPACE
|
||||
|
||||
|
@ -159,17 +162,16 @@ void WidgetsSharedHelper::changeEventHandler(QEvent *event)
|
|||
}
|
||||
#ifdef Q_OS_WINDOWS
|
||||
const WId windowId = m_targetWidget->winId();
|
||||
static const bool isWin11OrGreater = Utils::isWindowsVersionOrGreater(WindowsVersion::_11_21H2);
|
||||
const bool roundCorner = FramelessConfig::instance()->isSet(Option::WindowUseRoundCorners);
|
||||
if (Utils::windowStatesToWindowState(m_targetWidget->windowState()) == Qt::WindowFullScreen) {
|
||||
if (isWin11OrGreater && roundCorner) {
|
||||
if (WindowsVersionHelper::isWin11OrGreater() && roundCorner) {
|
||||
Utils::forceSquareCornersForWindow(windowId, true);
|
||||
}
|
||||
} else {
|
||||
const auto changeEvent = static_cast<QWindowStateChangeEvent *>(event);
|
||||
if (Utils::windowStatesToWindowState(changeEvent->oldState()) == Qt::WindowFullScreen) {
|
||||
Utils::maybeFixupQtInternals(windowId);
|
||||
if (isWin11OrGreater && roundCorner) {
|
||||
if (WindowsVersionHelper::isWin11OrGreater() && roundCorner) {
|
||||
Utils::forceSquareCornersForWindow(windowId, false);
|
||||
}
|
||||
}
|
||||
|
@ -215,8 +217,7 @@ void WidgetsSharedHelper::paintEventHandler(QPaintEvent *event)
|
|||
bool WidgetsSharedHelper::shouldDrawFrameBorder() const
|
||||
{
|
||||
#ifdef Q_OS_WINDOWS
|
||||
static const bool isWin11OrGreater = Utils::isWindowsVersionOrGreater(WindowsVersion::_11_21H2);
|
||||
return (Utils::isWindowFrameBorderVisible() && !isWin11OrGreater
|
||||
return (Utils::isWindowFrameBorderVisible() && !WindowsVersionHelper::isWin11OrGreater()
|
||||
&& (Utils::windowStatesToWindowState(m_targetWidget->windowState()) == Qt::WindowNoState));
|
||||
#else
|
||||
return false;
|
||||
|
|
Loading…
Reference in New Issue