Skip to content

Commit

Permalink
fix: Avoid closing non-light-dismissable flyouts on Window activation
Browse files Browse the repository at this point in the history
  • Loading branch information
MartinZikmund committed Feb 29, 2024
1 parent f208d4e commit 223faac
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions src/Uno.UI/UI/Xaml/Controls/Popup/PopupRoot.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ private void OnRootLoaded(object sender, RoutedEventArgs args)
{
if (XamlRoot is { } xamlRoot)
{
void OnChanged(object sender, object args) => CloseFlyouts();
void OnChanged(object sender, object args) => CloseLightDismissablePopups();

CompositeDisposable disposables = new();
xamlRoot.Changed += OnChanged;
Expand All @@ -50,15 +50,21 @@ private void OnRootUnloaded(object sender, RoutedEventArgs args)
_subscriptions.Disposable = null;
}

private void CloseFlyouts()
private void CloseLightDismissablePopups()
{
for (var i = _openPopups.Count - 1; i >= 0; i--)
{
var reference = _openPopups[i];
if (!reference.IsDisposed && reference.Target is Popup { IsForFlyout: true } popup)
if (!reference.IsDisposed && reference.Target is Popup { IsLightDismissEnabled: true } popup)
{
var f = popup.AssociatedFlyout;
f.Hide();
if (popup.AssociatedFlyout is { } flyout)
{
flyout.Hide();
}
else
{
popup.IsOpen = false;
}
}
}
}
Expand Down

0 comments on commit 223faac

Please sign in to comment.