diff --git a/src/Ursa.Themes.Semi/Controls/Dialog.axaml b/src/Ursa.Themes.Semi/Controls/Dialog.axaml index 33ae22e..9f13f46 100644 --- a/src/Ursa.Themes.Semi/Controls/Dialog.axaml +++ b/src/Ursa.Themes.Semi/Controls/Dialog.axaml @@ -19,6 +19,7 @@ - - - + + @@ -61,7 +61,7 @@ Grid.Column="2" Theme="{DynamicResource CloseButton}" /> - - + @@ -155,6 +156,7 @@ - + + + (); diff --git a/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Dialog.cs b/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Dialog.cs index 5fc4741..0368aec 100644 --- a/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Dialog.cs +++ b/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Dialog.cs @@ -1,5 +1,6 @@ using Avalonia; using Avalonia.Input; +using Avalonia.VisualTree; using Irihi.Avalonia.Shared.Helpers; using Irihi.Avalonia.Shared.Shapes; using Ursa.Controls.OverlayShared; @@ -170,9 +171,13 @@ public partial class OverlayDialogHost { _maskAppearAnimation.RunAsync(mask); } + + var element = control.GetVisualDescendants().OfType().FirstOrDefault(a => a.Focusable); + element?.Focus(); _modalCount++; IsInModalStatus = _modalCount > 0; control.IsClosed = false; + control.Focus(); } // Handle dialog layer change event diff --git a/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Drawer.cs b/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Drawer.cs index 15e0cd6..e6bec9d 100644 --- a/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Drawer.cs +++ b/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Drawer.cs @@ -2,7 +2,9 @@ using Avalonia; using Avalonia.Animation; using Avalonia.Animation.Easings; using Avalonia.Controls; +using Avalonia.Input; using Avalonia.Styling; +using Avalonia.VisualTree; using Irihi.Avalonia.Shared.Shapes; using Ursa.Common; using Ursa.Controls.OverlayShared; @@ -67,6 +69,8 @@ public partial class OverlayDialogHost { await Task.WhenAll(animation.RunAsync(control), _maskAppearAnimation.RunAsync(mask)); } + var element = control.GetVisualDescendants().OfType().FirstOrDefault(a => a.Focusable); + element?.Focus(); } private void SetDrawerPosition(DrawerControlBase control) diff --git a/src/Ursa/Controls/OverlayShared/OverlayFeedbackElement.cs b/src/Ursa/Controls/OverlayShared/OverlayFeedbackElement.cs index 3daa31e..50cc65a 100644 --- a/src/Ursa/Controls/OverlayShared/OverlayFeedbackElement.cs +++ b/src/Ursa/Controls/OverlayShared/OverlayFeedbackElement.cs @@ -20,6 +20,7 @@ public abstract class OverlayFeedbackElement: ContentControl static OverlayFeedbackElement() { + FocusableProperty.OverrideDefaultValue(false); DataContextProperty.Changed.AddClassHandler((o, e) => o.OnDataContextChange(e)); ClosedEvent.AddClassHandler((o,e)=>o.OnClosed(e)); }