Browse Source

Implement transparency level hint list on macOS.

pull/11509/head
Steven Kirk 3 years ago
parent
commit
0218a0d4ac
  1. 42
      src/Avalonia.Native/WindowImplBase.cs

42
src/Avalonia.Native/WindowImplBase.cs

@ -485,27 +485,27 @@ namespace Avalonia.Native
_native?.BeginDragAndDropOperation(effects, point, clipboard, callback, sourceHandle);
}
public void SetTransparencyLevelHint(IReadOnlyList<WindowTransparencyLevel> transparencyLevel)
{
////if (TransparencyLevel != transparencyLevel)
////{
//// if (transparencyLevel == WindowTransparencyLevel.Blur ||
//// transparencyLevel == WindowTransparencyLevel.AcrylicBlur ||
//// transparencyLevel == WindowTransparencyLevel.Mica)
//// {
//// transparencyLevel = WindowTransparencyLevel.AcrylicBlur;
//// }
//// TransparencyLevel = transparencyLevel;
//// _native.SetTransparencyMode(transparencyLevel == WindowTransparencyLevel.None
//// ? AvnWindowTransparencyMode.Opaque
//// : transparencyLevel == WindowTransparencyLevel.Transparent
//// ? AvnWindowTransparencyMode.Transparent
//// : AvnWindowTransparencyMode.Blur);
//// TransparencyLevelChanged?.Invoke(TransparencyLevel);
////}
public void SetTransparencyLevelHint(IReadOnlyList<WindowTransparencyLevel> transparencyLevels)
{
foreach (var level in transparencyLevels)
{
AvnWindowTransparencyMode? mode = null;
if (level == WindowTransparencyLevel.None)
mode = AvnWindowTransparencyMode.Opaque;
if (level == WindowTransparencyLevel.Transparent)
mode = AvnWindowTransparencyMode.Transparent;
else if (level == WindowTransparencyLevel.AcrylicBlur)
mode = AvnWindowTransparencyMode.Blur;
if (mode.HasValue)
{
_native?.SetTransparencyMode(mode.Value);
TransparencyLevel = level;
TransparencyLevelChanged?.Invoke(TransparencyLevel);
break;
}
}
}
public WindowTransparencyLevel TransparencyLevel { get; private set; } = WindowTransparencyLevel.None;

Loading…
Cancel
Save