committed by
GitHub
30 changed files with 356 additions and 153 deletions
@ -0,0 +1,7 @@ |
|||
Compat issues with assembly Avalonia.Controls: |
|||
MembersMustExist : Member 'protected void Avalonia.Controls.ComboBox.PopupClosedOverride(Avalonia.Controls.Primitives.PopupClosedEventArgs)' does not exist in the implementation but it does exist in the contract. |
|||
MembersMustExist : Member 'public Avalonia.StyledProperty<System.Boolean> Avalonia.StyledProperty<System.Boolean> Avalonia.Controls.Primitives.Popup.StaysOpenProperty' does not exist in the implementation but it does exist in the contract. |
|||
MembersMustExist : Member 'public void Avalonia.Controls.Primitives.Popup.add_Closed(System.EventHandler<Avalonia.Controls.Primitives.PopupClosedEventArgs>)' does not exist in the implementation but it does exist in the contract. |
|||
MembersMustExist : Member 'public void Avalonia.Controls.Primitives.Popup.remove_Closed(System.EventHandler<Avalonia.Controls.Primitives.PopupClosedEventArgs>)' does not exist in the implementation but it does exist in the contract. |
|||
TypesMustExist : Type 'Avalonia.Controls.Primitives.PopupClosedEventArgs' does not exist in the implementation but it does exist in the contract. |
|||
Total Issues: 5 |
|||
@ -0,0 +1,61 @@ |
|||
using System; |
|||
using System.Linq; |
|||
using Avalonia.Controls.Templates; |
|||
using Avalonia.Input; |
|||
using Avalonia.Rendering; |
|||
using Avalonia.Styling; |
|||
using Avalonia.VisualTree; |
|||
|
|||
#nullable enable |
|||
|
|||
namespace Avalonia.Controls.Primitives |
|||
{ |
|||
/// <summary>
|
|||
/// A layer that is used to dismiss a <see cref="Popup"/> when the user clicks outside.
|
|||
/// </summary>
|
|||
public class LightDismissOverlayLayer : Border, ICustomHitTest |
|||
{ |
|||
public IInputElement? InputPassThroughElement { get; set; } |
|||
|
|||
/// <summary>
|
|||
/// Returns the light dismiss overlay for a specified visual.
|
|||
/// </summary>
|
|||
/// <param name="visual">The visual.</param>
|
|||
/// <returns>The light dismiss overlay, or null if none found.</returns>
|
|||
public static LightDismissOverlayLayer? GetLightDismissOverlayLayer(IVisual visual) |
|||
{ |
|||
visual = visual ?? throw new ArgumentNullException(nameof(visual)); |
|||
|
|||
VisualLayerManager? manager; |
|||
|
|||
if (visual is TopLevel topLevel) |
|||
{ |
|||
manager = topLevel.GetTemplateChildren() |
|||
.OfType<VisualLayerManager>() |
|||
.FirstOrDefault(); |
|||
} |
|||
else |
|||
{ |
|||
manager = visual.FindAncestorOfType<VisualLayerManager>(); |
|||
} |
|||
|
|||
return manager?.LightDismissOverlayLayer; |
|||
} |
|||
|
|||
public bool HitTest(Point point) |
|||
{ |
|||
if (InputPassThroughElement is object) |
|||
{ |
|||
var p = point.Transform(this.TransformToVisual(VisualRoot)!.Value); |
|||
var hit = VisualRoot.GetVisualAt(p, x => x != this); |
|||
|
|||
if (hit is object) |
|||
{ |
|||
return !InputPassThroughElement.IsVisualAncestorOf(hit); |
|||
} |
|||
} |
|||
|
|||
return true; |
|||
} |
|||
} |
|||
} |
|||
@ -1,33 +0,0 @@ |
|||
using System; |
|||
using Avalonia.Interactivity; |
|||
|
|||
#nullable enable |
|||
|
|||
namespace Avalonia.Controls.Primitives |
|||
{ |
|||
/// <summary>
|
|||
/// Holds data for the <see cref="Popup.Closed"/> event.
|
|||
/// </summary>
|
|||
public class PopupClosedEventArgs : EventArgs |
|||
{ |
|||
/// <summary>
|
|||
/// Initializes a new instance of the <see cref="PopupClosedEventArgs"/> class.
|
|||
/// </summary>
|
|||
/// <param name="closeEvent"></param>
|
|||
public PopupClosedEventArgs(EventArgs? closeEvent) |
|||
{ |
|||
CloseEvent = closeEvent; |
|||
} |
|||
|
|||
/// <summary>
|
|||
/// Gets the event that closed the popup, if any.
|
|||
/// </summary>
|
|||
/// <remarks>
|
|||
/// If <see cref="Popup.StaysOpen"/> is false, then this property will hold details of the
|
|||
/// interaction that caused the popup to close if the close was caused by e.g. a pointer press
|
|||
/// outside the popup. It can be used to mark the event as handled if the event should not
|
|||
/// be propagated.
|
|||
/// </remarks>
|
|||
public EventArgs? CloseEvent { get; } |
|||
} |
|||
} |
|||
Loading…
Reference in new issue