Browse Source

Added WindowManagerAddShadowHint to PopupRoot. (#15238)

release/11.1.0-beta2
Steven Kirk 2 years ago
committed by Max Katz
parent
commit
6a34b18b03
  1. 7
      src/Avalonia.Controls/Primitives/Popup.cs
  2. 26
      src/Avalonia.Controls/Primitives/PopupRoot.cs
  3. 2
      src/Avalonia.Controls/ToolTip.cs

7
src/Avalonia.Controls/Primitives/Popup.cs

@ -150,6 +150,9 @@ namespace Avalonia.Controls.Primitives
public IPopupHost? Host => _openState?.PopupHost;
/// <summary>
/// Gets or sets a hint to the window manager that a shadow should be added to the popup.
/// </summary>
public bool WindowManagerAddShadowHint
{
get => GetValue(WindowManagerAddShadowHintProperty);
@ -653,9 +656,9 @@ namespace Avalonia.Controls.Primitives
private static void WindowManagerAddShadowHintChanged(IPopupHost host, bool hint)
{
if(host is PopupRoot pr && pr.PlatformImpl is not null)
if (host is PopupRoot pr)
{
pr.PlatformImpl.SetWindowManagerAddShadowHint(hint);
pr.WindowManagerAddShadowHint = hint;
}
}

26
src/Avalonia.Controls/Primitives/PopupRoot.cs

@ -20,6 +20,12 @@ namespace Avalonia.Controls.Primitives
public static readonly StyledProperty<Transform?> TransformProperty =
AvaloniaProperty.Register<PopupRoot, Transform?>(nameof(Transform));
/// <summary>
/// Defines the <see cref="WindowManagerAddShadowHint"/> property.
/// </summary>
public static readonly StyledProperty<bool> WindowManagerAddShadowHintProperty =
Popup.WindowManagerAddShadowHintProperty.AddOwner<PopupRoot>();
private PopupPositionerParameters _positionerParameters;
/// <summary>
@ -50,6 +56,7 @@ namespace Avalonia.Controls.Primitives
: base(impl, dependencyResolver)
{
ParentTopLevel = parent;
impl.SetWindowManagerAddShadowHint(WindowManagerAddShadowHint);
}
/// <summary>
@ -66,6 +73,15 @@ namespace Avalonia.Controls.Primitives
set => SetValue(TransformProperty, value);
}
/// <summary>
/// Gets or sets a hint to the window manager that a shadow should be added to the popup.
/// </summary>
public bool WindowManagerAddShadowHint
{
get => GetValue(WindowManagerAddShadowHintProperty);
set => SetValue(WindowManagerAddShadowHintProperty, value);
}
/// <summary>
/// Gets the parent control in the event route.
/// </summary>
@ -179,5 +195,15 @@ namespace Avalonia.Controls.Primitives
{
return new PopupRootAutomationPeer(this);
}
protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change)
{
base.OnPropertyChanged(change);
if (change.Property == WindowManagerAddShadowHintProperty)
{
PlatformImpl?.SetWindowManagerAddShadowHint(change.GetNewValue<bool>());
}
}
}
}

2
src/Avalonia.Controls/ToolTip.cs

@ -304,7 +304,7 @@ namespace Avalonia.Controls
{
if (host is PopupRoot pr)
{
pr.PlatformImpl?.SetWindowManagerAddShadowHint(hint);
pr.WindowManagerAddShadowHint = hint;
}
}

Loading…
Cancel
Save