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 Action Closed { get; set; }
public abstract IMouseDevice MouseDevice { get; } 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; public IPopupImpl CreatePopup() => null;
} }

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

@ -114,8 +114,13 @@ namespace Avalonia.Platform
IPopupImpl CreatePopup(); IPopupImpl CreatePopup();
/// <summary> /// <summary>
/// Gets or sets the <see cref="WindowTransparencyLevel"/> of the TopLevel. /// Sets the <see cref="WindowTransparencyLevel"/> hint of the TopLevel.
/// </summary> /// </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); AffectsMeasure<TopLevel>(ClientSizeProperty);
TransparencyLevelHintProperty.Changed.AddClassHandler<TopLevel>( 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> /// <summary>
@ -402,7 +402,7 @@ namespace Avalonia.Controls
_transparencyFallbackBorder = e.NameScope.Find<Border>("PART_TransparencyFallback"); _transparencyFallbackBorder = e.NameScope.Find<Border>("PART_TransparencyFallback");
HandleTransparencyLevelChanged(PlatformImpl.TransparencyLevelHint); HandleTransparencyLevelChanged(PlatformImpl.TransparencyLevel);
} }
/// <summary> /// <summary>

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

@ -144,7 +144,9 @@ namespace Avalonia.DesignerSupport.Remote
public Action GotInputWhenDisabled { get; set; } 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 class ClipboardStub : IClipboard

20
src/Avalonia.Native/WindowImplBase.cs

@ -391,23 +391,19 @@ namespace Avalonia.Native
_native.BeginDragAndDropOperation(effects, point, clipboard, callback, sourceHandle); _native.BeginDragAndDropOperation(effects, point, clipboard, callback, sourceHandle);
} }
private WindowTransparencyLevel _transparencyLevel; public void SetTransparencyLevelHint(WindowTransparencyLevel transparencyLevel)
public WindowTransparencyLevel TransparencyLevelHint
{ {
get => _transparencyLevel; if (TransparencyLevel != transparencyLevel)
set
{ {
if(_transparencyLevel != value) TransparencyLevel = transparencyLevel;
{
_transparencyLevel = value;
_native.SetBlurEnabled(_transparencyLevel >= WindowTransparencyLevel.Blur); _native.SetBlurEnabled(TransparencyLevel >= WindowTransparencyLevel.Blur);
TransparencyLevelChanged?.Invoke(_transparencyLevel); TransparencyLevelChanged?.Invoke(TransparencyLevel);
} }
}
} }
public WindowTransparencyLevel TransparencyLevel { get; private set; }
public IPlatformHandle Handle { 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 IPopupPositioner PopupPositioner { get; }
public ITopLevelNativeMenuExporter NativeMenuExporter { 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 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 OleDropTarget _dropTarget;
private Size _minSize; private Size _minSize;
private Size _maxSize; private Size _maxSize;
private WindowImpl _parent; private WindowImpl _parent;
private WindowTransparencyLevel _transparencyLevel = WindowTransparencyLevel.None;
public WindowImpl() 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; var level = EnableBlur(transparencyLevel);
set
{
var oldValue = _transparencyLevel;
_transparencyLevel = EnableBlur(value);
if (oldValue != _transparencyLevel) if (TransparencyLevel != level)
{ {
TransparencyLevelChanged?.Invoke(_transparencyLevel); TransparencyLevel = level;
} TransparencyLevelChanged?.Invoke(TransparencyLevel);
} }
} }
@ -281,7 +278,7 @@ namespace Avalonia.Win32
SetWindowCompositionAttribute(_hwnd, ref data); SetWindowCompositionAttribute(_hwnd, ref data);
Marshal.FreeHGlobal(accentPtr); Marshal.FreeHGlobal(accentPtr);
return transparencyLevel; return transparencyLevel;
} }

Loading…
Cancel
Save