feat: add DialogFocusHint attached property.

This commit is contained in:
rabbitism
2024-11-13 00:31:15 +08:00
parent b066a7d1c7
commit 9b3be2d44e
5 changed files with 54 additions and 10 deletions

View File

@@ -4,6 +4,7 @@ using Avalonia.VisualTree;
using Irihi.Avalonia.Shared.Helpers;
using Irihi.Avalonia.Shared.Shapes;
using Ursa.Controls.OverlayShared;
using Ursa.Helpers;
namespace Ursa.Controls;
@@ -113,12 +114,17 @@ public partial class OverlayDialogHost
control.AddHandler(DialogControlBase.LayerChangedEvent, OnDialogLayerChanged);
if (!IsAnimationDisabled) MaskAppearAnimation.RunAsync(mask);
var element = control.GetVisualDescendants().OfType<InputElement>().FirstOrDefault(a => a.Focusable);
var element = control.GetVisualDescendants().OfType<InputElement>()
.FirstOrDefault(FocusHelper.GetDialogFocusHint);
if (element is null)
{
element = control.GetVisualDescendants().OfType<InputElement>().FirstOrDefault(a => a.Focusable);
}
element?.Focus();
_modalCount++;
IsInModalStatus = _modalCount > 0;
control.IsClosed = false;
control.Focus();
// control.Focus();
}
// Handle dialog layer change event