From 1b2936c0fcd1083df9b423bf34398e4d93cc5c82 Mon Sep 17 00:00:00 2001 From: Max Katz Date: Mon, 20 Feb 2023 21:56:08 -0500 Subject: [PATCH] Add DefaultFocusAdornerProperty and set for themes --- src/Avalonia.Controls/Control.cs | 2 +- .../Primitives/AdornerLayer.cs | 15 ++++++++++++ .../{FocusAdorner.xaml => AdornerLayer.xaml} | 23 ++++++++----------- .../Controls/FluentControls.xaml | 2 +- .../Controls/AdornerLayer.xaml | 13 +++++++++++ .../Controls/FocusAdorner.xaml | 11 --------- .../Controls/SimpleControls.xaml | 2 +- 7 files changed, 41 insertions(+), 27 deletions(-) rename src/Avalonia.Themes.Fluent/Controls/{FocusAdorner.xaml => AdornerLayer.xaml} (50%) create mode 100644 src/Avalonia.Themes.Simple/Controls/AdornerLayer.xaml delete mode 100644 src/Avalonia.Themes.Simple/Controls/FocusAdorner.xaml diff --git a/src/Avalonia.Controls/Control.cs b/src/Avalonia.Controls/Control.cs index ab7c9948c4..642021ad56 100644 --- a/src/Avalonia.Controls/Control.cs +++ b/src/Avalonia.Controls/Control.cs @@ -403,7 +403,7 @@ namespace Avalonia.Controls { if (_focusAdorner == null) { - var template = GetValue(FocusAdornerProperty); + var template = GetValue(FocusAdornerProperty) ?? adornerLayer.DefaultFocusAdorner; if (template != null) { diff --git a/src/Avalonia.Controls/Primitives/AdornerLayer.cs b/src/Avalonia.Controls/Primitives/AdornerLayer.cs index 611d57a980..1e07036919 100644 --- a/src/Avalonia.Controls/Primitives/AdornerLayer.cs +++ b/src/Avalonia.Controls/Primitives/AdornerLayer.cs @@ -34,6 +34,12 @@ namespace Avalonia.Controls.Primitives public static readonly AttachedProperty AdornerProperty = AvaloniaProperty.RegisterAttached("Adorner"); + /// + /// Defines the property. + /// + public static readonly StyledProperty?> DefaultFocusAdornerProperty = + AvaloniaProperty.Register?>(nameof(DefaultFocusAdorner)); + private static readonly AttachedProperty s_adornedElementInfoProperty = AvaloniaProperty.RegisterAttached("AdornedElementInfo"); @@ -86,6 +92,15 @@ namespace Avalonia.Controls.Primitives visual.SetValue(AdornerProperty, adorner); } + /// + /// Gets or sets the default control's focus adorner. + /// + public ITemplate? DefaultFocusAdorner + { + get => GetValue(DefaultFocusAdornerProperty); + set => SetValue(DefaultFocusAdornerProperty, value); + } + private static void AdornerChanged(AvaloniaPropertyChangedEventArgs e) { if (e.Sender is Visual visual) diff --git a/src/Avalonia.Themes.Fluent/Controls/FocusAdorner.xaml b/src/Avalonia.Themes.Fluent/Controls/AdornerLayer.xaml similarity index 50% rename from src/Avalonia.Themes.Fluent/Controls/FocusAdorner.xaml rename to src/Avalonia.Themes.Fluent/Controls/AdornerLayer.xaml index c3f489da80..c4b91b4822 100644 --- a/src/Avalonia.Themes.Fluent/Controls/FocusAdorner.xaml +++ b/src/Avalonia.Themes.Fluent/Controls/AdornerLayer.xaml @@ -1,14 +1,11 @@ - - - 0 - 2 - 1 - - - - - + + diff --git a/src/Avalonia.Themes.Fluent/Controls/FluentControls.xaml b/src/Avalonia.Themes.Fluent/Controls/FluentControls.xaml index 532b0cff1b..31b0a01b21 100644 --- a/src/Avalonia.Themes.Fluent/Controls/FluentControls.xaml +++ b/src/Avalonia.Themes.Fluent/Controls/FluentControls.xaml @@ -4,6 +4,7 @@ + @@ -74,6 +75,5 @@ - diff --git a/src/Avalonia.Themes.Simple/Controls/AdornerLayer.xaml b/src/Avalonia.Themes.Simple/Controls/AdornerLayer.xaml new file mode 100644 index 0000000000..1f3acb07dc --- /dev/null +++ b/src/Avalonia.Themes.Simple/Controls/AdornerLayer.xaml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/src/Avalonia.Themes.Simple/Controls/FocusAdorner.xaml b/src/Avalonia.Themes.Simple/Controls/FocusAdorner.xaml deleted file mode 100644 index f1d5f5f2ac..0000000000 --- a/src/Avalonia.Themes.Simple/Controls/FocusAdorner.xaml +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/src/Avalonia.Themes.Simple/Controls/SimpleControls.xaml b/src/Avalonia.Themes.Simple/Controls/SimpleControls.xaml index 479db9ed09..dc533488c9 100644 --- a/src/Avalonia.Themes.Simple/Controls/SimpleControls.xaml +++ b/src/Avalonia.Themes.Simple/Controls/SimpleControls.xaml @@ -3,6 +3,7 @@ + @@ -72,6 +73,5 @@ -