diff --git a/dev/dll/SharedHelpers.cpp b/dev/dll/SharedHelpers.cpp index fc3a3f1b6f..f40da465e7 100644 --- a/dev/dll/SharedHelpers.cpp +++ b/dev/dll/SharedHelpers.cpp @@ -169,6 +169,15 @@ bool SharedHelpers::IsApplicationViewGetDisplayRegionsAvailable() return s_isApplicationViewGetDisplayRegionsAvailable; } +bool SharedHelpers::IsControlCornerRadiusAvailable() +{ + static bool s_isControlCornerRadiusAvailable = + IsSystemDll() || + Is19H1OrHigher() || + (IsRS5OrHigher() && winrt::ApiInformation::IsPropertyPresent(L"Windows.UI.Xaml.Controls.Control", L"CornerRadius")); + return s_isControlCornerRadiusAvailable; +} + bool SharedHelpers::IsTranslationFacadeAvailable(const winrt::UIElement& element) { static bool s_areFacadesAvailable = (element.try_as() != nullptr); diff --git a/dev/dll/ThemeResources.cpp b/dev/dll/ThemeResources.cpp index 8ef55461ce..30f496de0a 100644 --- a/dev/dll/ThemeResources.cpp +++ b/dev/dll/ThemeResources.cpp @@ -26,7 +26,7 @@ ThemeResources::ThemeResources() // RS3 styles should be used on builds where ListViewItemPresenter's VSM integration works. bool isRS3OrHigher = SharedHelpers::DoesListViewItemPresenterVSMWork(); bool isRS4OrHigher = SharedHelpers::IsRS4OrHigher(); - bool isRS5OrHigher = SharedHelpers::IsRS5OrHigher(); + bool isRS5OrHigher = SharedHelpers::IsRS5OrHigher() && SharedHelpers::IsControlCornerRadiusAvailable(); bool is19H1OrHigher = SharedHelpers::Is19H1OrHigher(); bool isInFrameworkPackage = SharedHelpers::IsInFrameworkPackage(); @@ -132,7 +132,7 @@ void SetDefaultStyleKeyWorker(winrt::IControlProtected const& controlProtected, // RS3 styles should be used on builds where ListViewItemPresenter's VSM integration works. bool isRS3OrHigher = SharedHelpers::DoesListViewItemPresenterVSMWork(); bool isRS4OrHigher = SharedHelpers::IsRS4OrHigher(); - bool isRS5OrHigher = SharedHelpers::IsRS5OrHigher(); + bool isRS5OrHigher = SharedHelpers::IsRS5OrHigher() && SharedHelpers::IsControlCornerRadiusAvailable(); bool is19H1OrHigher = SharedHelpers::Is19H1OrHigher(); bool isInFrameworkPackage = SharedHelpers::IsInFrameworkPackage(); @@ -196,4 +196,4 @@ void SetDefaultStyleKeyWorker(winrt::IControlProtected const& controlProtected, control5.DefaultStyleResourceUri(uri); } #endif -} \ No newline at end of file +} diff --git a/dev/inc/SharedHelpers.h b/dev/inc/SharedHelpers.h index e697d9b7f6..b14ea7b701 100644 --- a/dev/inc/SharedHelpers.h +++ b/dev/inc/SharedHelpers.h @@ -45,6 +45,8 @@ class SharedHelpers static bool IsApplicationViewGetDisplayRegionsAvailable(); + static bool IsControlCornerRadiusAvailable(); + static bool IsTranslationFacadeAvailable(const winrt::UIElement& element); static bool IsIconSourceElementAvailable();