Browse Source

Merge pull request #8246 from AvaloniaUI/fixes/flyout-not-opening-more-than-once

re-set popup.Parent if its no longer set.
pull/8248/head
Max Katz 4 years ago
committed by Dan Walmsley
parent
commit
651c4be024
  1. 2
      src/Avalonia.Controls/Flyouts/FlyoutBase.cs
  2. 22
      tests/Avalonia.Controls.UnitTests/FlyoutTests.cs

2
src/Avalonia.Controls/Flyouts/FlyoutBase.cs

@ -221,7 +221,7 @@ namespace Avalonia.Controls.Primitives
((ISetLogicalParent)Popup).SetParent(null);
}
if (Popup.PlacementTarget != placementTarget)
if (Popup.Parent == null || Popup.PlacementTarget != placementTarget)
{
Popup.PlacementTarget = Target = placementTarget;
((ISetLogicalParent)Popup).SetParent(placementTarget);

22
tests/Avalonia.Controls.UnitTests/FlyoutTests.cs

@ -451,6 +451,28 @@ namespace Avalonia.Controls.UnitTests
Assert.Null(popup.Parent);
}
}
[Fact]
public void Should_Reset_Popup_Parent_On_Target_Attach_Following_Detach()
{
using (CreateServicesWithFocus())
{
var userControl = new UserControl();
var window = PreparedWindow(userControl);
window.Show();
var flyout = new TestFlyout();
flyout.ShowAt(userControl);
var popup = Assert.IsType<Popup>(flyout.Popup);
Assert.NotNull(popup.Parent);
flyout.Hide();
flyout.ShowAt(userControl);
Assert.NotNull(popup.Parent);
}
}
[Fact]
public void ContextFlyout_Can_Be_Set_In_Styles()

Loading…
Cancel
Save