win: allow square corner on win11

This commit is contained in:
Yuhang Zhao 2023-08-31 18:26:49 +08:00
parent 64a4362580
commit 97112f853f
3 changed files with 10 additions and 3 deletions

View File

@ -328,7 +328,8 @@ enum class Option : quint8
ForceNonNativeBackgroundBlur,
DisableLazyInitializationForMicaMaterial,
ForceNativeBackgroundBlur,
Last = ForceNativeBackgroundBlur
WindowUseSquareCorners,
Last = WindowUseSquareCorners
};
Q_ENUM_NS(Option)

View File

@ -65,7 +65,8 @@ static constexpr const std::array<FramelessConfigEntry, static_cast<int>(Option:
FramelessConfigEntry{ "FRAMELESSHELPER_ENABLE_BLUR_BEHIND_WINDOW", "Options/EnableBlurBehindWindow" },
FramelessConfigEntry{ "FRAMELESSHELPER_FORCE_NON_NATIVE_BACKGROUND_BLUR", "Options/ForceNonNativeBackgroundBlur" },
FramelessConfigEntry{ "FRAMELESSHELPER_DISABLE_LAZY_INITIALIZATION_FOR_MICA_MATERIAL", "Options/DisableLazyInitializationForMicaMaterial" },
FramelessConfigEntry{ "FRAMELESSHELPER_FORCE_NATIVE_BACKGROUND_BLUR", "Options/ForceNativeBackgroundBlur" }
FramelessConfigEntry{ "FRAMELESSHELPER_FORCE_NATIVE_BACKGROUND_BLUR", "Options/ForceNativeBackgroundBlur" },
FramelessConfigEntry{ "FRAMELESSHELPER_WINDOW_USE_SQUARE_CORNERS", "Options/WindowUseSquareCorners" }
};
static constexpr const auto OptionCount = std::size(FramelessOptionsTable);

View File

@ -261,7 +261,7 @@ void FramelessHelperWin::addWindow(FramelessParamsConst params)
if (WindowsVersionHelper::isWin10RS5OrGreater()) {
const bool dark = (FramelessManager::instance()->systemTheme() == SystemTheme::Dark);
const auto isWidget = [params]() -> bool {
const auto widget = params->getWidgetHandle();
const QObject *widget = params->getWidgetHandle();
return (widget && widget->isWidgetType());
}();
if (!isWidget) {
@ -270,6 +270,11 @@ void FramelessHelperWin::addWindow(FramelessParamsConst params)
std::ignore = Utils::updateGlobalWin32ControlsTheme(windowId, dark);
}
std::ignore = Utils::refreshWin32ThemeResources(windowId, dark);
if (WindowsVersionHelper::isWin11OrGreater()) {
if (FramelessConfig::instance()->isSet(Option::WindowUseSquareCorners)) {
std::ignore = Utils::setCornerStyleForWindow(windowId, WindowCornerStyle::Square);
}
}
}
}
}