From cac4650c98633d1d7c33199a3e1a9f69342983bb Mon Sep 17 00:00:00 2001 From: Julien Lebosquain Date: Thu, 5 Feb 2026 07:24:54 +0000 Subject: [PATCH] Remove obsolete members from Avalonia.Base (#20613) * Remove CubicBezierEasing * Remove CustomAnimatorBase * Remove BindingPriority.TemplatedParent * Remove CompiledBindingPath.SetRawSource * Remove StyleDiagnostics * Remove RadialGradientBrush.Radius * Remove Color.ToUint32 * Remove DrawingContext.PushPreTransform/PushPostTransform * Remove ICompositionGpuImporterObject.ImportCompeted * Remove IStyleable * Remove AvaloniaResourcesIndex.WriteResources * Remove AvaloniaObjectExtensions.Bind overload * Update API suppressions --- api/Avalonia.nupkg.xml | 264 ++++++++++++++++++ .../Animation/Animation.AnimatorRegistry.cs | 13 +- .../Animation/Easings/CubicBezierEasing.cs | 17 -- .../Animation/ICustomAnimator.cs | 30 +- src/Avalonia.Base/AvaloniaObjectExtensions.cs | 27 -- src/Avalonia.Base/Data/BindingPriority.cs | 5 +- src/Avalonia.Base/Data/CompiledBindingPath.cs | 6 - .../Diagnostics/StyleDiagnostics.cs | 37 --- .../Diagnostics/StyleValueFrameDiagnostic.cs | 3 - .../Diagnostics/StyledElementExtensions.cs | 24 -- src/Avalonia.Base/Media/Color.cs | 7 - src/Avalonia.Base/Media/DrawingContext.cs | 9 +- .../Media/IRadialGradientBrush.cs | 2 - .../Immutable/ImmutableRadialGradientBrush.cs | 2 - .../Media/RadialGradientBrush.cs | 40 --- .../Brushes/ServerSimpleCompositionBrush.cs | 2 +- .../Composition/CompositionExternalMemory.cs | 6 - .../Composition/CompositionInterop.cs | 1 - src/Avalonia.Base/StyledElement.cs | 27 +- src/Avalonia.Base/Styling/ControlTheme.cs | 2 +- src/Avalonia.Base/Styling/IStyleable.cs | 28 -- src/Avalonia.Base/Styling/NestingSelector.cs | 4 +- .../Styling/TypeNameAndClassSelector.cs | 2 +- .../Utilities/AvaloniaResourcesIndex.cs | 8 - src/Avalonia.Controls/ItemsControl.cs | 2 +- .../AvaloniaXamlIlWellKnownTypes.cs | 6 +- .../XamlIlAvaloniaPropertyHelper.cs | 26 +- 27 files changed, 285 insertions(+), 315 deletions(-) delete mode 100644 src/Avalonia.Base/Animation/Easings/CubicBezierEasing.cs delete mode 100644 src/Avalonia.Base/Diagnostics/StyleDiagnostics.cs delete mode 100644 src/Avalonia.Base/Diagnostics/StyledElementExtensions.cs delete mode 100644 src/Avalonia.Base/Styling/IStyleable.cs diff --git a/api/Avalonia.nupkg.xml b/api/Avalonia.nupkg.xml index 5a424cb8ee..4cf1912a2e 100644 --- a/api/Avalonia.nupkg.xml +++ b/api/Avalonia.nupkg.xml @@ -1,12 +1,48 @@ + + CP0001 + T:Avalonia.Animation.CustomAnimatorBase + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + + + CP0001 + T:Avalonia.Animation.CustomAnimatorBase`1 + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + + + CP0001 + T:Avalonia.Animation.Easings.CubicBezierEasing + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + CP0001 T:Avalonia.Controls.Primitives.IScrollable baseline/Avalonia/lib/net10.0/Avalonia.Base.dll current/Avalonia/lib/net10.0/Avalonia.Base.dll + + CP0001 + T:Avalonia.Diagnostics.AppliedStyle + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + + + CP0001 + T:Avalonia.Diagnostics.StyledElementExtensions + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + + + CP0001 + T:Avalonia.Diagnostics.StyleDiagnostics + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + CP0001 T:Avalonia.Media.Fonts.FontFamilyLoader @@ -37,6 +73,12 @@ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll current/Avalonia/lib/net10.0/Avalonia.Base.dll + + CP0001 + T:Avalonia.Styling.IStyleable + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + CP0001 T:Avalonia.Utilities.StringTokenizer @@ -73,12 +115,48 @@ baseline/Avalonia/lib/net6.0/Avalonia.Base.dll current/Avalonia/lib/net6.0/Avalonia.Base.dll + + CP0001 + T:Avalonia.Animation.CustomAnimatorBase + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + + + CP0001 + T:Avalonia.Animation.CustomAnimatorBase`1 + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + + + CP0001 + T:Avalonia.Animation.Easings.CubicBezierEasing + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + CP0001 T:Avalonia.Controls.Primitives.IScrollable baseline/Avalonia/lib/net8.0/Avalonia.Base.dll current/Avalonia/lib/net8.0/Avalonia.Base.dll + + CP0001 + T:Avalonia.Diagnostics.AppliedStyle + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + + + CP0001 + T:Avalonia.Diagnostics.StyledElementExtensions + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + + + CP0001 + T:Avalonia.Diagnostics.StyleDiagnostics + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + CP0001 T:Avalonia.Media.Fonts.FontFamilyLoader @@ -109,6 +187,12 @@ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll current/Avalonia/lib/net8.0/Avalonia.Base.dll + + CP0001 + T:Avalonia.Styling.IStyleable + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + CP0001 T:Avalonia.Utilities.StringTokenizer @@ -151,6 +235,12 @@ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll current/Avalonia/lib/net10.0/Avalonia.Base.dll + + CP0002 + F:Avalonia.Data.BindingPriority.TemplatedParent + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + CP0002 F:Avalonia.Media.DrawingImage.ViewboxProperty @@ -163,12 +253,36 @@ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll current/Avalonia/lib/net10.0/Avalonia.Base.dll + + CP0002 + F:Avalonia.Media.RadialGradientBrush.RadiusProperty + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + + + CP0002 + M:Avalonia.Animation.Animation.SetAnimator(Avalonia.Animation.IAnimationSetter,Avalonia.Animation.CustomAnimatorBase) + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + + + CP0002 + M:Avalonia.AvaloniaObjectExtensions.Bind(Avalonia.AvaloniaObject,Avalonia.AvaloniaProperty,Avalonia.Data.BindingBase,System.Object) + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + CP0002 M:Avalonia.Controls.ResourcesChangedEventArgs.#ctor baseline/Avalonia/lib/net10.0/Avalonia.Base.dll current/Avalonia/lib/net10.0/Avalonia.Base.dll + + CP0002 + M:Avalonia.Data.CompiledBindingPathBuilder.SetRawSource(System.Object) + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + CP0002 M:Avalonia.Data.ReflectionBinding.#ctor(System.String,Avalonia.Data.BindingMode) @@ -193,6 +307,30 @@ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll current/Avalonia/lib/net10.0/Avalonia.Base.dll + + CP0002 + M:Avalonia.Media.Color.ToUint32 + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + + + CP0002 + M:Avalonia.Media.DrawingContext.PushPostTransform(Avalonia.Matrix) + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + + + CP0002 + M:Avalonia.Media.DrawingContext.PushPreTransform(Avalonia.Matrix) + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + + + CP0002 + M:Avalonia.Media.DrawingContext.PushTransformContainer + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + CP0002 M:Avalonia.Media.DrawingImage.get_Viewbox @@ -223,6 +361,30 @@ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll current/Avalonia/lib/net10.0/Avalonia.Base.dll + + CP0002 + M:Avalonia.Media.Immutable.ImmutableRadialGradientBrush.get_Radius + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + + + CP0002 + M:Avalonia.Media.IRadialGradientBrush.get_Radius + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + + + CP0002 + M:Avalonia.Media.RadialGradientBrush.get_Radius + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + + + CP0002 + M:Avalonia.Media.RadialGradientBrush.set_Radius(System.Double) + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + CP0002 M:Avalonia.Media.StreamGeometryContext.ArcTo(Avalonia.Point,Avalonia.Size,System.Double,System.Boolean,Avalonia.Media.SweepDirection) @@ -331,6 +493,18 @@ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll current/Avalonia/lib/net10.0/Avalonia.Base.dll + + CP0002 + M:Avalonia.Rendering.Composition.ICompositionGpuImportedObject.get_ImportCompeted + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + + + CP0002 + M:Avalonia.Utilities.AvaloniaResourcesIndexReaderWriter.WriteResources(System.IO.Stream,System.Collections.Generic.List{System.ValueTuple{System.String,System.Int32,System.Func{System.IO.Stream}}}) + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + CP0002 M:Avalonia.Visuals.Platform.PathGeometryContext.ArcTo(Avalonia.Point,Avalonia.Size,System.Double,System.Boolean,Avalonia.Media.SweepDirection) @@ -589,6 +763,12 @@ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll current/Avalonia/lib/net8.0/Avalonia.Base.dll + + CP0002 + F:Avalonia.Data.BindingPriority.TemplatedParent + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + CP0002 F:Avalonia.Media.DrawingImage.ViewboxProperty @@ -601,12 +781,36 @@ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll current/Avalonia/lib/net8.0/Avalonia.Base.dll + + CP0002 + F:Avalonia.Media.RadialGradientBrush.RadiusProperty + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + + + CP0002 + M:Avalonia.Animation.Animation.SetAnimator(Avalonia.Animation.IAnimationSetter,Avalonia.Animation.CustomAnimatorBase) + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + + + CP0002 + M:Avalonia.AvaloniaObjectExtensions.Bind(Avalonia.AvaloniaObject,Avalonia.AvaloniaProperty,Avalonia.Data.BindingBase,System.Object) + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + CP0002 M:Avalonia.Controls.ResourcesChangedEventArgs.#ctor baseline/Avalonia/lib/net8.0/Avalonia.Base.dll current/Avalonia/lib/net8.0/Avalonia.Base.dll + + CP0002 + M:Avalonia.Data.CompiledBindingPathBuilder.SetRawSource(System.Object) + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + CP0002 M:Avalonia.Data.ReflectionBinding.#ctor(System.String,Avalonia.Data.BindingMode) @@ -631,6 +835,30 @@ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll current/Avalonia/lib/net8.0/Avalonia.Base.dll + + CP0002 + M:Avalonia.Media.Color.ToUint32 + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + + + CP0002 + M:Avalonia.Media.DrawingContext.PushPostTransform(Avalonia.Matrix) + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + + + CP0002 + M:Avalonia.Media.DrawingContext.PushPreTransform(Avalonia.Matrix) + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + + + CP0002 + M:Avalonia.Media.DrawingContext.PushTransformContainer + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + CP0002 M:Avalonia.Media.DrawingImage.get_Viewbox @@ -661,6 +889,30 @@ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll current/Avalonia/lib/net8.0/Avalonia.Base.dll + + CP0002 + M:Avalonia.Media.Immutable.ImmutableRadialGradientBrush.get_Radius + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + + + CP0002 + M:Avalonia.Media.IRadialGradientBrush.get_Radius + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + + + CP0002 + M:Avalonia.Media.RadialGradientBrush.get_Radius + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + + + CP0002 + M:Avalonia.Media.RadialGradientBrush.set_Radius(System.Double) + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + CP0002 M:Avalonia.Media.StreamGeometryContext.ArcTo(Avalonia.Point,Avalonia.Size,System.Double,System.Boolean,Avalonia.Media.SweepDirection) @@ -769,6 +1021,18 @@ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll current/Avalonia/lib/net8.0/Avalonia.Base.dll + + CP0002 + M:Avalonia.Rendering.Composition.ICompositionGpuImportedObject.get_ImportCompeted + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + + + CP0002 + M:Avalonia.Utilities.AvaloniaResourcesIndexReaderWriter.WriteResources(System.IO.Stream,System.Collections.Generic.List{System.ValueTuple{System.String,System.Int32,System.Func{System.IO.Stream}}}) + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + CP0002 M:Avalonia.Visuals.Platform.PathGeometryContext.ArcTo(Avalonia.Point,Avalonia.Size,System.Double,System.Boolean,Avalonia.Media.SweepDirection) diff --git a/src/Avalonia.Base/Animation/Animation.AnimatorRegistry.cs b/src/Avalonia.Base/Animation/Animation.AnimatorRegistry.cs index b07bd686b8..da3c4cb8e6 100644 --- a/src/Avalonia.Base/Animation/Animation.AnimatorRegistry.cs +++ b/src/Avalonia.Base/Animation/Animation.AnimatorRegistry.cs @@ -7,17 +7,6 @@ namespace Avalonia.Animation; partial class Animation { - /// - /// Sets the value of the Animator attached property for a setter. - /// - /// The animation setter. - /// The property animator value. - [Obsolete("CustomAnimatorBase will be removed before 11.0, use InterpolatingAnimator", true)] - public static void SetAnimator(IAnimationSetter setter, CustomAnimatorBase value) - { - s_animators[setter] = (value.WrapperType, value.CreateWrapper); - } - /// /// Sets the value of the Animator attached property for a setter. /// @@ -92,4 +81,4 @@ partial class Animation return null; } -} \ No newline at end of file +} diff --git a/src/Avalonia.Base/Animation/Easings/CubicBezierEasing.cs b/src/Avalonia.Base/Animation/Easings/CubicBezierEasing.cs deleted file mode 100644 index 2e43e97da2..0000000000 --- a/src/Avalonia.Base/Animation/Easings/CubicBezierEasing.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; - -namespace Avalonia.Animation.Easings; - -[Obsolete("Use SplineEasing instead")] -public sealed class CubicBezierEasing : IEasing -{ - private CubicBezierEasing() - { - } - - public Point ControlPoint2 { get; set; } - public Point ControlPoint1 { get; set; } - - double IEasing.Ease(double progress) - => throw new NotSupportedException(); -} diff --git a/src/Avalonia.Base/Animation/ICustomAnimator.cs b/src/Avalonia.Base/Animation/ICustomAnimator.cs index 119a6115da..7155af1223 100644 --- a/src/Avalonia.Base/Animation/ICustomAnimator.cs +++ b/src/Avalonia.Base/Animation/ICustomAnimator.cs @@ -2,34 +2,6 @@ using System; using Avalonia.Animation.Animators; namespace Avalonia.Animation; -[Obsolete("This class will be removed before 11.0, use InterpolatingAnimator", true)] -public abstract class CustomAnimatorBase -{ - internal abstract IAnimator CreateWrapper(); - internal abstract Type WrapperType { get; } -} - -[Obsolete("This class will be removed before 11.0, use InterpolatingAnimator", true)] -public abstract class CustomAnimatorBase : CustomAnimatorBase -{ - public abstract T Interpolate(double progress, T oldValue, T newValue); - - internal override Type WrapperType => typeof(AnimatorWrapper); - internal override IAnimator CreateWrapper() => new AnimatorWrapper(this); - - internal class AnimatorWrapper : Animator - { - private readonly CustomAnimatorBase _parent; - - public AnimatorWrapper(CustomAnimatorBase parent) - { - _parent = parent; - } - - public override T Interpolate(double progress, T oldValue, T newValue) => _parent.Interpolate(progress, oldValue, newValue); - } -} - public interface ICustomAnimator { internal IAnimator CreateWrapper(); @@ -55,4 +27,4 @@ public abstract class InterpolatingAnimator : ICustomAnimator public override T Interpolate(double progress, T oldValue, T newValue) => _parent.Interpolate(progress, oldValue, newValue); } -} \ No newline at end of file +} diff --git a/src/Avalonia.Base/AvaloniaObjectExtensions.cs b/src/Avalonia.Base/AvaloniaObjectExtensions.cs index 7c4e67b5cc..3c9c047684 100644 --- a/src/Avalonia.Base/AvaloniaObjectExtensions.cs +++ b/src/Avalonia.Base/AvaloniaObjectExtensions.cs @@ -227,33 +227,6 @@ namespace Avalonia }; } - /// - /// Binds a property on an to an . - /// - /// The object. - /// The property to bind. - /// The binding. - /// - /// An optional anchor from which to locate required context. When binding to objects that - /// are not in the logical tree, certain types of binding need an anchor into the tree in - /// order to locate named controls or resources. The parameter - /// can be used to provide this context. - /// - /// An which can be used to cancel the binding. - [Obsolete("Use AvaloniaObject.Bind(AvaloniaProperty, IBinding")] - public static IDisposable Bind( - this AvaloniaObject target, - AvaloniaProperty property, - BindingBase binding, - object? anchor = null) - { - target = target ?? throw new ArgumentNullException(nameof(target)); - property = property ?? throw new ArgumentNullException(nameof(property)); - binding = binding ?? throw new ArgumentNullException(nameof(binding)); - - return target.Bind(property, binding); - } - /// /// Gets a value. /// diff --git a/src/Avalonia.Base/Data/BindingPriority.cs b/src/Avalonia.Base/Data/BindingPriority.cs index cb7f559e0a..b817c89f7b 100644 --- a/src/Avalonia.Base/Data/BindingPriority.cs +++ b/src/Avalonia.Base/Data/BindingPriority.cs @@ -46,9 +46,6 @@ namespace Avalonia.Data /// /// The value is uninitialized. /// - Unset = int.MaxValue, - - [Obsolete("Use Template priority"), EditorBrowsable(EditorBrowsableState.Never)] - TemplatedParent = Template, + Unset = int.MaxValue } } diff --git a/src/Avalonia.Base/Data/CompiledBindingPath.cs b/src/Avalonia.Base/Data/CompiledBindingPath.cs index aea320702e..886d89df43 100644 --- a/src/Avalonia.Base/Data/CompiledBindingPath.cs +++ b/src/Avalonia.Base/Data/CompiledBindingPath.cs @@ -203,12 +203,6 @@ namespace Avalonia.Data return this; } - [Obsolete("This method doesn't do anything anymore. Use Binding.Source instead.")] - public CompiledBindingPathBuilder SetRawSource(object? rawSource) - { - return this; - } - public CompiledBindingPath Build() => new CompiledBindingPath(_elements.ToArray()); } diff --git a/src/Avalonia.Base/Diagnostics/StyleDiagnostics.cs b/src/Avalonia.Base/Diagnostics/StyleDiagnostics.cs deleted file mode 100644 index 3db48cd69c..0000000000 --- a/src/Avalonia.Base/Diagnostics/StyleDiagnostics.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System; -using System.Collections.Generic; -using Avalonia.Metadata; -using Avalonia.Styling; - -namespace Avalonia.Diagnostics; - -[PrivateApi] -[Unstable("Use StyledElementExtensions.GetValueStoreDiagnostic() instead")] -public class StyleDiagnostics -{ - /// - /// Currently applied styles. - /// - public IReadOnlyList AppliedStyles { get; } - - public StyleDiagnostics(IReadOnlyList appliedStyles) - { - AppliedStyles = appliedStyles; - } -} - -[PrivateApi] -[Unstable("Use StyledElementExtensions.GetValueStoreDiagnostic() instead")] -public sealed class AppliedStyle -{ - private readonly StyleInstance _instance; - - internal AppliedStyle(StyleInstance instance) - { - _instance = instance; - } - - public bool HasActivator => _instance.HasActivator; - public bool IsActive => _instance.IsActive(); - public StyleBase Style => (StyleBase)_instance.Source; -} diff --git a/src/Avalonia.Base/Diagnostics/StyleValueFrameDiagnostic.cs b/src/Avalonia.Base/Diagnostics/StyleValueFrameDiagnostic.cs index 2b0d6c3c64..27683dbe72 100644 --- a/src/Avalonia.Base/Diagnostics/StyleValueFrameDiagnostic.cs +++ b/src/Avalonia.Base/Diagnostics/StyleValueFrameDiagnostic.cs @@ -39,7 +39,4 @@ internal class StyleValueFrameDiagnostic : IValueFrameDiagnostic } } } - - [Unstable("Compatibility with 11.x")] - public AppliedStyle AsAppliedStyle() => new AppliedStyle(_styleInstance); } diff --git a/src/Avalonia.Base/Diagnostics/StyledElementExtensions.cs b/src/Avalonia.Base/Diagnostics/StyledElementExtensions.cs deleted file mode 100644 index 78ab52a6bc..0000000000 --- a/src/Avalonia.Base/Diagnostics/StyledElementExtensions.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Linq; -using Avalonia.Metadata; -using Avalonia.Styling; - -namespace Avalonia.Diagnostics; - -/// -/// Defines diagnostic extensions on s. -/// -[PrivateApi] -public static class StyledElementExtensions -{ - [Obsolete("Use AvaloniaObjectExtensions.GetValueStoreDiagnostic instead", true)] - public static StyleDiagnostics GetStyleDiagnostics(this StyledElement styledElement) - { - var diagnostics = styledElement.GetValueStore().GetStoreDiagnostic(); - return new StyleDiagnostics(diagnostics.AppliedFrames - .OfType() - .Select(f => f.AsAppliedStyle()) - .ToArray()); - } -} - diff --git a/src/Avalonia.Base/Media/Color.cs b/src/Avalonia.Base/Media/Color.cs index ba487b1e80..ae16c30320 100644 --- a/src/Avalonia.Base/Media/Color.cs +++ b/src/Avalonia.Base/Media/Color.cs @@ -472,13 +472,6 @@ namespace Avalonia.Media return ((uint)A << 24) | ((uint)R << 16) | ((uint)G << 8) | (uint)B; } - /// - [Obsolete("Use Color.ToUInt32() instead."), EditorBrowsable(EditorBrowsableState.Never)] - public uint ToUint32() - { - return ToUInt32(); - } - /// /// Returns the HSL color model equivalent of this RGB color. /// diff --git a/src/Avalonia.Base/Media/DrawingContext.cs b/src/Avalonia.Base/Media/DrawingContext.cs index 0f73e4af98..df6e7d112b 100644 --- a/src/Avalonia.Base/Media/DrawingContext.cs +++ b/src/Avalonia.Base/Media/DrawingContext.cs @@ -432,15 +432,8 @@ namespace Avalonia.Media _states.Push(new RestoreState(this, RestoreState.PushedStateType.TextOptions)); return new PushedState(this); } - protected abstract void PushTextOptionsCore(TextOptions textOptions); - [Obsolete("Use PushTransform"), EditorBrowsable(EditorBrowsableState.Never)] - public PushedState PushPreTransform(Matrix matrix) => PushTransform(matrix); - [Obsolete("Use PushTransform"), EditorBrowsable(EditorBrowsableState.Never)] - public PushedState PushPostTransform(Matrix matrix) => PushTransform(matrix); - [Obsolete("Use PushTransform"), EditorBrowsable(EditorBrowsableState.Never)] - public PushedState PushTransformContainer() => PushTransform(Matrix.Identity); - + protected abstract void PushTextOptionsCore(TextOptions textOptions); protected abstract void PushTransformCore(Matrix matrix); diff --git a/src/Avalonia.Base/Media/IRadialGradientBrush.cs b/src/Avalonia.Base/Media/IRadialGradientBrush.cs index 9999b8679c..e2e4136527 100644 --- a/src/Avalonia.Base/Media/IRadialGradientBrush.cs +++ b/src/Avalonia.Base/Media/IRadialGradientBrush.cs @@ -20,8 +20,6 @@ namespace Avalonia.Media /// RelativePoint GradientOrigin { get; } - [Obsolete("Use RadiusX/RadiusY")] public double Radius { get; } - /// /// Gets the horizontal radius of the outermost circle of the radial gradient. /// diff --git a/src/Avalonia.Base/Media/Immutable/ImmutableRadialGradientBrush.cs b/src/Avalonia.Base/Media/Immutable/ImmutableRadialGradientBrush.cs index 016de0d423..3b210874d9 100644 --- a/src/Avalonia.Base/Media/Immutable/ImmutableRadialGradientBrush.cs +++ b/src/Avalonia.Base/Media/Immutable/ImmutableRadialGradientBrush.cs @@ -85,7 +85,5 @@ namespace Avalonia.Media.Immutable /// public RelativeScalar RadiusY { get; } - - [Obsolete("Use RadiusX/RadiusY")] public double Radius => RadiusX.Scalar; } } diff --git a/src/Avalonia.Base/Media/RadialGradientBrush.cs b/src/Avalonia.Base/Media/RadialGradientBrush.cs index 89acd63980..768f0fec67 100644 --- a/src/Avalonia.Base/Media/RadialGradientBrush.cs +++ b/src/Avalonia.Base/Media/RadialGradientBrush.cs @@ -27,15 +27,6 @@ namespace Avalonia.Media AvaloniaProperty.Register( nameof(GradientOrigin), RelativePoint.Center); - - /// - /// Defines the property. - /// - [Obsolete("Use RadiusX/RadiusY, note that those properties use _relative_ values, so Radius=0.55 would become RadiusX=55% RadiusY=55%. Radius property is always relative even if the rest of the brush uses absolute values.")] - public static readonly StyledProperty RadiusProperty = - AvaloniaProperty.Register( - nameof(Radius), - 0.5); /// /// Defines the property. @@ -74,9 +65,6 @@ namespace Avalonia.Media /// Gets or sets the horizontal radius of the outermost circle of the radial /// gradient. /// -#pragma warning disable CS0618 // Type or member is obsolete - [DependsOn(nameof(Radius))] -#pragma warning restore CS0618 // Type or member is obsolete public RelativeScalar RadiusX { get { return GetValue(RadiusXProperty); } @@ -87,25 +75,11 @@ namespace Avalonia.Media /// Gets or sets the vertical radius of the outermost circle of the radial /// gradient. /// -#pragma warning disable CS0618 // Type or member is obsolete - [DependsOn(nameof(Radius))] -#pragma warning restore CS0618 // Type or member is obsolete public RelativeScalar RadiusY { get { return GetValue(RadiusYProperty); } set { SetValue(RadiusYProperty, value); } } - - /// - /// Gets or sets the horizontal and vertical radius of the outermost circle of the radial - /// gradient. - /// - [Obsolete("Use RadiusX/RadiusY, note that those properties use _relative_ values, so Radius=0.55 would become RadiusX=55% RadiusY=55%. Radius property is always relative even if the rest of the brush uses absolute values.")] - public double Radius - { - get { return GetValue(RadiusProperty); } - set { SetValue(RadiusProperty, value); } - } /// public override IImmutableBrush ToImmutable() @@ -121,19 +95,5 @@ namespace Avalonia.Media base.SerializeChanges(c, writer); ServerCompositionSimpleRadialGradientBrush.SerializeAllChanges(writer, Center, GradientOrigin, RadiusX, RadiusY); } - - protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change) - { -#pragma warning disable CS0618 // Type or member is obsolete: compatibility code for Radius - if (change.IsEffectiveValueChange && change.Property == RadiusProperty) - { - var compatibilityValue = new RelativeScalar(Radius, RelativeUnit.Relative); - SetCurrentValue(RadiusXProperty, compatibilityValue); - SetCurrentValue(RadiusYProperty, compatibilityValue); - } -#pragma warning restore CS0618 // Type or member is obsolete - - base.OnPropertyChanged(change); - } } } diff --git a/src/Avalonia.Base/Rendering/Composition/Brushes/ServerSimpleCompositionBrush.cs b/src/Avalonia.Base/Rendering/Composition/Brushes/ServerSimpleCompositionBrush.cs index 653ee88cef..d15b76cca5 100644 --- a/src/Avalonia.Base/Rendering/Composition/Brushes/ServerSimpleCompositionBrush.cs +++ b/src/Avalonia.Base/Rendering/Composition/Brushes/ServerSimpleCompositionBrush.cs @@ -49,7 +49,7 @@ namespace Avalonia.Rendering.Composition.Server partial class ServerCompositionSimpleRadialGradientBrush : IRadialGradientBrush { - public double Radius => RadiusX.Scalar; + } partial class ServerCompositionSimpleSolidColorBrush : ISolidColorBrush diff --git a/src/Avalonia.Base/Rendering/Composition/CompositionExternalMemory.cs b/src/Avalonia.Base/Rendering/Composition/CompositionExternalMemory.cs index 17fc5c8595..2837df8642 100644 --- a/src/Avalonia.Base/Rendering/Composition/CompositionExternalMemory.cs +++ b/src/Avalonia.Base/Rendering/Composition/CompositionExternalMemory.cs @@ -101,12 +101,6 @@ public interface ICompositionGpuImportedObject : IAsyncDisposable /// Task ImportCompleted { get; } - /// - /// ImportCompleted (recommended replacement) - [Obsolete("Please use ICompositionGpuImportedObject.ImportCompleted instead")] - [EditorBrowsable(EditorBrowsableState.Never)] - Task ImportCompeted { get; } - /// /// Indicates if the device context this instance is associated with is no longer available /// diff --git a/src/Avalonia.Base/Rendering/Composition/CompositionInterop.cs b/src/Avalonia.Base/Rendering/Composition/CompositionInterop.cs index 2cf6288c02..a66ab701a1 100644 --- a/src/Avalonia.Base/Rendering/Composition/CompositionInterop.cs +++ b/src/Avalonia.Base/Rendering/Composition/CompositionInterop.cs @@ -87,7 +87,6 @@ abstract class CompositionGpuImportedObjectBase : ICompositionGpuImportedObject public Task ImportCompleted { get; } - public Task ImportCompeted => ImportCompleted; public bool IsLost => Context.IsLost; public ValueTask DisposeAsync() => new(Compositor.InvokeServerJobAsync(() => diff --git a/src/Avalonia.Base/StyledElement.cs b/src/Avalonia.Base/StyledElement.cs index 711d17d014..d1b960390c 100644 --- a/src/Avalonia.Base/StyledElement.cs +++ b/src/Avalonia.Base/StyledElement.cs @@ -21,7 +21,6 @@ namespace Avalonia /// Extends an with the following features: /// /// - An inherited . - /// - Implements to allow styling to work on the styled element. /// - Implements to form part of a logical tree. /// - A collection of class strings for custom styling. /// @@ -35,10 +34,7 @@ namespace Avalonia ISetInheritanceParent, ISupportInitialize, INamed, - IAvaloniaListItemValidator, -#pragma warning disable CS0618 // Type or member is obsolete - IStyleable -#pragma warning restore CS0618 // Type or member is obsolete + IAvaloniaListItemValidator { /// /// Defines the property. @@ -330,9 +326,6 @@ namespace Avalonia bool IResourceNode.HasResources => (_resources?.HasResources ?? false) || (((IResourceNode?)_styles)?.HasResources ?? false); - /// - IAvaloniaReadOnlyList IStyleable.Classes => Classes; - /// bool IStyleHost.IsStylesInitialized => _styles != null; @@ -668,7 +661,7 @@ namespace Avalonia // If the Theme property is not set, try to find a ControlTheme resource with our StyleKey. if (_implicitTheme is null) { - var key = GetStyleKey(this); + var key = StyleKey; if (this.TryFindResource(key, out var value) && value is ControlTheme t) _implicitTheme = t; @@ -699,22 +692,6 @@ namespace Avalonia } } - /// - /// Internal getter for so that we only need to suppress the obsolete - /// warning in one place. - /// - /// The element - /// - /// is obsolete and will be removed in a future version, but for backwards - /// compatibility we need to support code which overrides . - /// - internal static Type GetStyleKey(StyledElement e) - { -#pragma warning disable CS0618 // Type or member is obsolete - return ((IStyleable)e).StyleKey; -#pragma warning restore CS0618 // Type or member is obsolete - } - private static void DataContextNotifying(AvaloniaObject o, bool updateStarted) { if (o is StyledElement element) diff --git a/src/Avalonia.Base/Styling/ControlTheme.cs b/src/Avalonia.Base/Styling/ControlTheme.cs index fbd869a9a7..138c2f9de5 100644 --- a/src/Avalonia.Base/Styling/ControlTheme.cs +++ b/src/Avalonia.Base/Styling/ControlTheme.cs @@ -50,7 +50,7 @@ namespace Avalonia.Styling using var activity = Diagnostic.AttachingStyle()? .AddTag(Diagnostic.Tags.Style, this); - if (HasSettersOrAnimations && TargetType.IsAssignableFrom(StyledElement.GetStyleKey(target))) + if (HasSettersOrAnimations && TargetType.IsAssignableFrom(target.StyleKey)) { Attach(target, null, type, true); activity?.AddTag(Diagnostic.Tags.SelectorResult, SelectorMatchResult.AlwaysThisType); diff --git a/src/Avalonia.Base/Styling/IStyleable.cs b/src/Avalonia.Base/Styling/IStyleable.cs deleted file mode 100644 index 0768669905..0000000000 --- a/src/Avalonia.Base/Styling/IStyleable.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using Avalonia.Collections; - -namespace Avalonia.Styling -{ - /// - /// Interface for styleable elements. - /// - [Obsolete("This interface may be removed in 12.0. Use StyledElement, or override StyledElement.StyleKeyOverride to override the StyleKey for a class.")] - public interface IStyleable : INamed - { - /// - /// Gets the list of classes for the control. - /// - IAvaloniaReadOnlyList Classes { get; } - - /// - /// Gets the type by which the control is styled. - /// - [Obsolete("Override StyledElement.StyleKeyOverride instead.")] - Type StyleKey { get; } - - /// - /// Gets the template parent of this element if the control comes from a template. - /// - AvaloniaObject? TemplatedParent { get; } - } -} diff --git a/src/Avalonia.Base/Styling/NestingSelector.cs b/src/Avalonia.Base/Styling/NestingSelector.cs index 4f6920c224..07fc24b644 100644 --- a/src/Avalonia.Base/Styling/NestingSelector.cs +++ b/src/Avalonia.Base/Styling/NestingSelector.cs @@ -23,7 +23,7 @@ namespace Avalonia.Styling { if (theme.TargetType is null) throw new InvalidOperationException("ControlTheme has no TargetType."); - return theme.TargetType.IsAssignableFrom(StyledElement.GetStyleKey(control)) ? + return theme.TargetType.IsAssignableFrom(control.StyleKey) ? SelectorMatch.AlwaysThisType : SelectorMatch.NeverThisType; } @@ -31,7 +31,7 @@ namespace Avalonia.Styling { if (queryTheme.TargetType is null) throw new InvalidOperationException("ControlTheme has no TargetType."); - return queryTheme.TargetType.IsAssignableFrom(StyledElement.GetStyleKey(control)) ? + return queryTheme.TargetType.IsAssignableFrom(control.StyleKey) ? SelectorMatch.AlwaysThisType : SelectorMatch.NeverThisType; } diff --git a/src/Avalonia.Base/Styling/TypeNameAndClassSelector.cs b/src/Avalonia.Base/Styling/TypeNameAndClassSelector.cs index 4fba8c02c6..4f78d91a38 100644 --- a/src/Avalonia.Base/Styling/TypeNameAndClassSelector.cs +++ b/src/Avalonia.Base/Styling/TypeNameAndClassSelector.cs @@ -93,7 +93,7 @@ namespace Avalonia.Styling { if (TargetType != null) { - var controlType = StyledElement.GetStyleKey(control) ?? control.GetType(); + var controlType = control.StyleKey ?? control.GetType(); if (IsConcreteType) { diff --git a/src/Avalonia.Base/Utilities/AvaloniaResourcesIndex.cs b/src/Avalonia.Base/Utilities/AvaloniaResourcesIndex.cs index 452898937d..d84d9cf737 100644 --- a/src/Avalonia.Base/Utilities/AvaloniaResourcesIndex.cs +++ b/src/Avalonia.Base/Utilities/AvaloniaResourcesIndex.cs @@ -67,14 +67,6 @@ namespace Avalonia.Utilities } } - [Obsolete] - public static void WriteResources(Stream output, List<(string Path, int Size, Func Open)> resources) - { - WriteResources(output, - resources.Select(r => new AvaloniaResourcesEntry { Path = r.Path, Open = r.Open, Size = r.Size }) - .ToList()); - } - public static void WriteResources(Stream output, IReadOnlyList resources) { var entries = new List(); diff --git a/src/Avalonia.Controls/ItemsControl.cs b/src/Avalonia.Controls/ItemsControl.cs index 0c3e908bbf..a9cf4ca8d8 100644 --- a/src/Avalonia.Controls/ItemsControl.cs +++ b/src/Avalonia.Controls/ItemsControl.cs @@ -720,7 +720,7 @@ namespace Avalonia.Controls { var itemContainerTheme = ItemContainerTheme; - if (itemContainerTheme?.TargetType?.IsAssignableFrom(GetStyleKey(container)) == true) + if (itemContainerTheme?.TargetType?.IsAssignableFrom(container.StyleKey) == true) { // We have an ItemContainerTheme and it matches the container. Set the Theme // property, and mark the container as having had ItemContainerTheme applied. diff --git a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs index df54e71108..28ea193adf 100644 --- a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs +++ b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs @@ -22,6 +22,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers public IXamlMethod AvaloniaObjectSetStyledPropertyValue { get; } public IXamlType AvaloniaAttachedPropertyT { get; } public IXamlType BindingBase { get; } + public IXamlType BindingExpressionBase { get; } public IXamlType MultiBinding { get; } public IXamlMethod AvaloniaObjectBindMethod { get; } public IXamlMethod AvaloniaObjectSetValueMethod { get; } @@ -200,6 +201,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers && m.Parameters[0].Name == "StyledProperty`1" && m.Parameters[2].Equals(BindingPriority)); BindingBase = cfg.TypeSystem.GetType("Avalonia.Data.BindingBase"); + BindingExpressionBase = cfg.TypeSystem.GetType("Avalonia.Data.BindingExpressionBase"); MultiBinding = cfg.TypeSystem.GetType("Avalonia.Data.MultiBinding"); IDisposable = cfg.TypeSystem.GetType("System.IDisposable"); ICommand = cfg.TypeSystem.GetType("System.Windows.Input.ICommand"); @@ -215,9 +217,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers AvaloniaListAttribute = cfg.TypeSystem.GetType("Avalonia.Metadata.AvaloniaListAttribute"); AvaloniaList = cfg.TypeSystem.GetType("Avalonia.Collections.AvaloniaList`1"); OnExtensionType = cfg.TypeSystem.GetType("Avalonia.Markup.Xaml.MarkupExtensions.On"); - AvaloniaObjectBindMethod = AvaloniaObjectExtensions.GetMethod("Bind", IDisposable, false, AvaloniaObject, - AvaloniaProperty, - BindingBase, cfg.WellKnownTypes.Object); + AvaloniaObjectBindMethod = AvaloniaObject.GetMethod("Bind", BindingExpressionBase, false, AvaloniaProperty, BindingBase); UnsetValueType = cfg.TypeSystem.GetType("Avalonia.UnsetValueType"); StyledElement = cfg.TypeSystem.GetType("Avalonia.StyledElement"); INameScope = cfg.TypeSystem.GetType("Avalonia.Controls.INameScope"); diff --git a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs index 442c7dd495..1a72dcd9a5 100644 --- a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs +++ b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs @@ -297,8 +297,8 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions emitter .Stloc(bloc.Local) .Ldsfld(AvaloniaProperty) - .Ldloc(bloc.Local); - EmitAnchorAndBind(emitter); + .Ldloc(bloc.Local) + .EmitCall(Types.AvaloniaObjectBindMethod, true); } public override void EmitWithArguments( @@ -308,14 +308,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions { emitter.Ldsfld(AvaloniaProperty); context.Emit(arguments[0], emitter, Parameters[0]); - EmitAnchorAndBind(emitter); - } - - private void EmitAnchorAndBind(IXamlILEmitter emitter) - { - emitter - .Ldnull() // TODO: provide anchor? - .EmitCall(Types.AvaloniaObjectBindMethod, true); + emitter.EmitCall(Types.AvaloniaObjectBindMethod, true); } } @@ -336,8 +329,8 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions .Stloc(bloc.Local) .Pop() // ignore priority .Ldsfld(AvaloniaProperty) - .Ldloc(bloc.Local); - EmitAnchorAndBind(emitter); + .Ldloc(bloc.Local) + .EmitCall(Types.AvaloniaObjectBindMethod, true); } public override void EmitWithArguments( @@ -347,14 +340,7 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions { emitter.Ldsfld(AvaloniaProperty); context.Emit(arguments[1], emitter, Parameters[1]); - EmitAnchorAndBind(emitter); - } - - private void EmitAnchorAndBind(IXamlILEmitter emitter) - { - emitter - .Ldnull() // TODO: provide anchor? - .EmitCall(Types.AvaloniaObjectBindMethod, true); + emitter.EmitCall(Types.AvaloniaObjectBindMethod, true); } }