From 9f02c649e75740957d5142646f569447b61dc51b Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 11 Mar 2022 16:11:06 +0000 Subject: [PATCH] make mica fallback to acrylic on compatible windows 10 --- src/Avalonia.Controls/WindowTransparencyLevel.cs | 5 +++++ src/Windows/Avalonia.Win32/WindowImpl.cs | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.Controls/WindowTransparencyLevel.cs b/src/Avalonia.Controls/WindowTransparencyLevel.cs index f416b5de91..d463f74a0e 100644 --- a/src/Avalonia.Controls/WindowTransparencyLevel.cs +++ b/src/Avalonia.Controls/WindowTransparencyLevel.cs @@ -22,6 +22,11 @@ /// AcrylicBlur, + /// + /// Force acrylic on some incompatible versions of Windows 10. + /// + ForceAcrylicBlur, + /// /// The window background is based on desktop wallpaper tint with a blur. This will only work on Windows 11 /// diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index 3953a0995d..3e1b2a1609 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -396,6 +396,11 @@ namespace Avalonia.Win32 } } + if (Win32Platform.WindowsVersion.Major == 10 && effect == BlurEffect.Mica) + { + effect = BlurEffect.Acrylic; + } + _blurHost?.SetBlur(effect); return transparencyLevel; @@ -428,7 +433,8 @@ namespace Avalonia.Win32 break; case WindowTransparencyLevel.AcrylicBlur: - case (WindowTransparencyLevel.AcrylicBlur + 1): // hack-force acrylic. + case WindowTransparencyLevel.ForceAcrylicBlur: // hack-force acrylic. + case WindowTransparencyLevel.Mica: accent.AccentState = AccentState.ACCENT_ENABLE_ACRYLIC; transparencyLevel = WindowTransparencyLevel.AcrylicBlur; break;