Browse Source

dont use property for setting transparency level hint.

pull/3962/head
Dan Walmsley 6 years ago
parent
commit
d1049fd79f
  1. 4
      src/Avalonia.Controls/Embedding/Offscreen/OffscreenTopLevelImpl.cs
  2. 9
      src/Avalonia.Controls/Platform/ITopLevelImpl.cs
  3. 4
      src/Avalonia.Controls/TopLevel.cs
  4. 4
      src/Avalonia.DesignerSupport/Remote/Stubs.cs
  5. 20
      src/Avalonia.Native/WindowImplBase.cs
  6. 5
      src/Avalonia.X11/X11Window.cs
  7. 4
      src/Linux/Avalonia.LinuxFramebuffer/FramebufferToplevelImpl.cs
  8. 23
      src/Windows/Avalonia.Win32/WindowImpl.cs

4
src/Avalonia.Controls/Embedding/Offscreen/OffscreenTopLevelImpl.cs

@ -65,7 +65,9 @@ namespace Avalonia.Controls.Embedding.Offscreen
public Action Closed { get; set; }
public abstract IMouseDevice MouseDevice { get; }
public WindowTransparencyLevel TransparencyLevelHint { get => WindowTransparencyLevel.None; set { } }
public void SetTransparencyLevelHint(WindowTransparencyLevel transparencyLevel) { }
public WindowTransparencyLevel TransparencyLevel { get; private set; }
public IPopupImpl CreatePopup() => null;
}

9
src/Avalonia.Controls/Platform/ITopLevelImpl.cs

@ -114,8 +114,13 @@ namespace Avalonia.Platform
IPopupImpl CreatePopup();
/// <summary>
/// Gets or sets the <see cref="WindowTransparencyLevel"/> of the TopLevel.
/// Sets the <see cref="WindowTransparencyLevel"/> hint of the TopLevel.
/// </summary>
WindowTransparencyLevel TransparencyLevelHint { get; set; }
void SetTransparencyLevelHint(WindowTransparencyLevel transparencyLevel);
/// <summary>
/// Gets the current <see cref="WindowTransparencyLevel"/> of the TopLevel.
/// </summary>
WindowTransparencyLevel TransparencyLevel { get; }
}
}

4
src/Avalonia.Controls/TopLevel.cs

@ -83,7 +83,7 @@ namespace Avalonia.Controls
AffectsMeasure<TopLevel>(ClientSizeProperty);
TransparencyLevelHintProperty.Changed.AddClassHandler<TopLevel>(
(tl, e) => { if (tl.PlatformImpl != null) tl.PlatformImpl.TransparencyLevelHint = (WindowTransparencyLevel)e.NewValue; });
(tl, e) => { if (tl.PlatformImpl != null) tl.PlatformImpl.SetTransparencyLevelHint((WindowTransparencyLevel)e.NewValue); });
}
/// <summary>
@ -402,7 +402,7 @@ namespace Avalonia.Controls
_transparencyFallbackBorder = e.NameScope.Find<Border>("PART_TransparencyFallback");
HandleTransparencyLevelChanged(PlatformImpl.TransparencyLevelHint);
HandleTransparencyLevelChanged(PlatformImpl.TransparencyLevel);
}
/// <summary>

4
src/Avalonia.DesignerSupport/Remote/Stubs.cs

@ -144,7 +144,9 @@ namespace Avalonia.DesignerSupport.Remote
public Action GotInputWhenDisabled { get; set; }
public WindowTransparencyLevel TransparencyLevelHint { get => WindowTransparencyLevel.None; set { } }
public void SetTransparencyLevelHint(WindowTransparencyLevel transparencyLevel) { }
public WindowTransparencyLevel TransparencyLevel { get; private set; }
}
class ClipboardStub : IClipboard

20
src/Avalonia.Native/WindowImplBase.cs

@ -391,23 +391,19 @@ namespace Avalonia.Native
_native.BeginDragAndDropOperation(effects, point, clipboard, callback, sourceHandle);
}
private WindowTransparencyLevel _transparencyLevel;
public WindowTransparencyLevel TransparencyLevelHint
public void SetTransparencyLevelHint(WindowTransparencyLevel transparencyLevel)
{
get => _transparencyLevel;
set
if (TransparencyLevel != transparencyLevel)
{
if(_transparencyLevel != value)
{
_transparencyLevel = value;
TransparencyLevel = transparencyLevel;
_native.SetBlurEnabled(_transparencyLevel >= WindowTransparencyLevel.Blur);
TransparencyLevelChanged?.Invoke(_transparencyLevel);
}
}
_native.SetBlurEnabled(TransparencyLevel >= WindowTransparencyLevel.Blur);
TransparencyLevelChanged?.Invoke(TransparencyLevel);
}
}
public WindowTransparencyLevel TransparencyLevel { get; private set; }
public IPlatformHandle Handle { get; private set; }
}
}

5
src/Avalonia.X11/X11Window.cs

@ -1086,6 +1086,9 @@ namespace Avalonia.X11
public IPopupPositioner PopupPositioner { get; }
public ITopLevelNativeMenuExporter NativeMenuExporter { get; }
public WindowTransparencyLevel TransparencyLevelHint { get; set; }
public void SetTransparencyLevelHint(WindowTransparencyLevel transparencyLevel) { }
public WindowTransparencyLevel TransparencyLevel { get; private set; }
}
}

4
src/Linux/Avalonia.LinuxFramebuffer/FramebufferToplevelImpl.cs

@ -83,6 +83,8 @@ namespace Avalonia.LinuxFramebuffer
public Size ScaledSize => _outputBackend.PixelSize.ToSize(Scaling);
public WindowTransparencyLevel TransparencyLevelHint { get => WindowTransparencyLevel.None; set { } }
public void SetTransparencyLevelHint(WindowTransparencyLevel transparencyLevel) { }
public WindowTransparencyLevel TransparencyLevel { get; private set; }
}
}

23
src/Windows/Avalonia.Win32/WindowImpl.cs

@ -66,8 +66,7 @@ namespace Avalonia.Win32
private OleDropTarget _dropTarget;
private Size _minSize;
private Size _maxSize;
private WindowImpl _parent;
private WindowTransparencyLevel _transparencyLevel = WindowTransparencyLevel.None;
private WindowImpl _parent;
public WindowImpl()
{
@ -210,18 +209,16 @@ namespace Avalonia.Win32
}
}
public WindowTransparencyLevel TransparencyLevelHint
public WindowTransparencyLevel TransparencyLevel { get; private set; }
public void SetTransparencyLevelHint (WindowTransparencyLevel transparencyLevel)
{
get => _transparencyLevel;
set
{
var oldValue = _transparencyLevel;
_transparencyLevel = EnableBlur(value);
var level = EnableBlur(transparencyLevel);
if (oldValue != _transparencyLevel)
{
TransparencyLevelChanged?.Invoke(_transparencyLevel);
}
if (TransparencyLevel != level)
{
TransparencyLevel = level;
TransparencyLevelChanged?.Invoke(TransparencyLevel);
}
}
@ -281,7 +278,7 @@ namespace Avalonia.Win32
SetWindowCompositionAttribute(_hwnd, ref data);
Marshal.FreeHGlobal(accentPtr);
Marshal.FreeHGlobal(accentPtr);
return transparencyLevel;
}

Loading…
Cancel
Save