Browse Source

Only move focus if Popup had it

pull/4809/head
amwx 6 years ago
parent
commit
7f7db22004
  1. 23
      src/Avalonia.Controls/Primitives/Popup.cs

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

@ -587,16 +587,23 @@ namespace Avalonia.Controls.Primitives
Closed?.Invoke(this, EventArgs.Empty); Closed?.Invoke(this, EventArgs.Empty);
if (PlacementTarget != null) var focusCheck = FocusManager.Instance?.Current;
{
FocusManager.Instance?.Focus(PlacementTarget); // Focus is set to null as part of popup closing, so we only want to
} // set focus to PlacementTarget if this is the case
else if (focusCheck == null)
{ {
var anc = this.FindLogicalAncestorOfType<IControl>(); if (PlacementTarget != null)
if (anc != null)
{ {
FocusManager.Instance?.Focus(anc); FocusManager.Instance?.Focus(PlacementTarget);
}
else
{
var anc = this.FindLogicalAncestorOfType<IControl>();
if (anc != null)
{
FocusManager.Instance?.Focus(anc);
}
} }
} }
} }

Loading…
Cancel
Save