From cc93b6cb861e96075620e1067184ee2657ab47b2 Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Fri, 14 Oct 2022 15:37:53 +0200 Subject: [PATCH 01/38] feat: Enable rule CA1822 --- .editorconfig | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.editorconfig b/.editorconfig index 337760636b..bcc1b4e011 100644 --- a/.editorconfig +++ b/.editorconfig @@ -141,6 +141,8 @@ dotnet_analyzer_diagnostic.category-Performance.severity = none #error - Uncomme dotnet_diagnostic.CA1802.severity = warning # CA1825: Avoid zero-length array allocations dotnet_diagnostic.CA1825.severity = warning +# CA1822: Mark members as static +dotnet_diagnostic.CA1822.severity = warning # Wrapping preferences csharp_wrap_before_ternary_opsigns = false From 8724514a73e901d61e5fc622e4e21cadbe3d54d3 Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Fri, 14 Oct 2022 17:04:53 +0200 Subject: [PATCH 02/38] feat(ControlCatalog): Address rule CA1822 --- .../Pages/AutoCompleteBoxPage.xaml.cs | 8 +++---- .../Pages/CompositionPage.axaml.cs | 4 ++-- .../ControlCatalog/Pages/ImagePage.xaml.cs | 4 ++-- .../ControlCatalog/Pages/OpenGlPage.xaml.cs | 22 +++++++++---------- samples/ControlCatalog/Pages/ScreenPage.cs | 12 +++++----- .../Pages/TabControlPage.xaml.cs | 16 +++++++------- 6 files changed, 33 insertions(+), 33 deletions(-) diff --git a/samples/ControlCatalog/Pages/AutoCompleteBoxPage.xaml.cs b/samples/ControlCatalog/Pages/AutoCompleteBoxPage.xaml.cs index bc18327f12..15021b89c6 100644 --- a/samples/ControlCatalog/Pages/AutoCompleteBoxPage.xaml.cs +++ b/samples/ControlCatalog/Pages/AutoCompleteBoxPage.xaml.cs @@ -32,7 +32,7 @@ namespace ControlCatalog.Pages } } - private StateData[] BuildAllStates() + private static StateData[] BuildAllStates() { return new StateData[] { @@ -90,7 +90,7 @@ namespace ControlCatalog.Pages } public StateData[] States { get; private set; } - private LinkedList[] BuildAllSentences() + private static LinkedList[] BuildAllSentences() { return new string[] { @@ -108,8 +108,8 @@ namespace ControlCatalog.Pages { this.InitializeComponent(); - States = BuildAllStates(); - Sentences = BuildAllSentences(); + States = AutoCompleteBoxPage.BuildAllStates(); + Sentences = AutoCompleteBoxPage.BuildAllSentences(); foreach (AutoCompleteBox box in GetAllAutoCompleteBox().Where(x => x.Name != "CustomAutocompleteBox")) { diff --git a/samples/ControlCatalog/Pages/CompositionPage.axaml.cs b/samples/ControlCatalog/Pages/CompositionPage.axaml.cs index 61e0ed5acb..877c183a22 100644 --- a/samples/ControlCatalog/Pages/CompositionPage.axaml.cs +++ b/samples/ControlCatalog/Pages/CompositionPage.axaml.cs @@ -22,10 +22,10 @@ public partial class CompositionPage : UserControl protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e) { base.OnAttachedToVisualTree(e); - this.Get("Items").Items = CreateColorItems(); + this.Get("Items").Items = CompositionPage.CreateColorItems(); } - private List CreateColorItems() + private static List CreateColorItems() { var list = new List(); diff --git a/samples/ControlCatalog/Pages/ImagePage.xaml.cs b/samples/ControlCatalog/Pages/ImagePage.xaml.cs index 45043aa5af..a520ee9b46 100644 --- a/samples/ControlCatalog/Pages/ImagePage.xaml.cs +++ b/samples/ControlCatalog/Pages/ImagePage.xaml.cs @@ -52,13 +52,13 @@ namespace ControlCatalog.Pages var comboxBox = (ComboBox)sender; if (_croppedImage.Source is CroppedBitmap croppedBitmap) { - croppedBitmap.SourceRect = GetCropRect(comboxBox.SelectedIndex); + croppedBitmap.SourceRect = ImagePage.GetCropRect(comboxBox.SelectedIndex); } } } - private PixelRect GetCropRect(int index) + private static PixelRect GetCropRect(int index) { var bitmapWidth = 640; var bitmapHeight = 426; diff --git a/samples/ControlCatalog/Pages/OpenGlPage.xaml.cs b/samples/ControlCatalog/Pages/OpenGlPage.xaml.cs index a126fbefe5..2f636f88cf 100644 --- a/samples/ControlCatalog/Pages/OpenGlPage.xaml.cs +++ b/samples/ControlCatalog/Pages/OpenGlPage.xaml.cs @@ -247,7 +247,7 @@ namespace ControlCatalog.Pages } - private void CheckError(GlInterface gl) + private static void CheckError(GlInterface gl) { int err; while ((err = gl.GetError()) != GL_NO_ERROR) @@ -256,7 +256,7 @@ namespace ControlCatalog.Pages protected unsafe override void OnOpenGlInit(GlInterface GL, int fb) { - CheckError(GL); + OpenGlPageControl.CheckError(GL); Info = $"Renderer: {GL.GetString(GL_RENDERER)} Version: {GL.GetString(GL_VERSION)}"; @@ -277,13 +277,13 @@ namespace ControlCatalog.Pages GL.BindAttribLocationString(_shaderProgram, positionLocation, "aPos"); GL.BindAttribLocationString(_shaderProgram, normalLocation, "aNormal"); Console.WriteLine(GL.LinkProgramAndGetError(_shaderProgram)); - CheckError(GL); + OpenGlPageControl.CheckError(GL); // Create the vertex buffer object (VBO) for the vertex data. _vertexBufferObject = GL.GenBuffer(); // Bind the VBO and copy the vertex data into it. GL.BindBuffer(GL_ARRAY_BUFFER, _vertexBufferObject); - CheckError(GL); + OpenGlPageControl.CheckError(GL); var vertexSize = Marshal.SizeOf(); fixed (void* pdata = _points) GL.BufferData(GL_ARRAY_BUFFER, new IntPtr(_points.Length * vertexSize), @@ -291,21 +291,21 @@ namespace ControlCatalog.Pages _indexBufferObject = GL.GenBuffer(); GL.BindBuffer(GL_ELEMENT_ARRAY_BUFFER, _indexBufferObject); - CheckError(GL); + OpenGlPageControl.CheckError(GL); fixed (void* pdata = _indices) GL.BufferData(GL_ELEMENT_ARRAY_BUFFER, new IntPtr(_indices.Length * sizeof(ushort)), new IntPtr(pdata), GL_STATIC_DRAW); - CheckError(GL); + OpenGlPageControl.CheckError(GL); _vertexArrayObject = GL.GenVertexArray(); GL.BindVertexArray(_vertexArrayObject); - CheckError(GL); + OpenGlPageControl.CheckError(GL); GL.VertexAttribPointer(positionLocation, 3, GL_FLOAT, 0, vertexSize, IntPtr.Zero); GL.VertexAttribPointer(normalLocation, 3, GL_FLOAT, 0, vertexSize, new IntPtr(12)); GL.EnableVertexAttribArray(positionLocation); GL.EnableVertexAttribArray(normalLocation); - CheckError(GL); + OpenGlPageControl.CheckError(GL); } @@ -339,7 +339,7 @@ namespace ControlCatalog.Pages GL.BindBuffer(GL_ELEMENT_ARRAY_BUFFER, _indexBufferObject); GL.BindVertexArray(_vertexArrayObject); GL.UseProgram(_shaderProgram); - CheckError(GL); + OpenGlPageControl.CheckError(GL); var projection = Matrix4x4.CreatePerspectiveFieldOfView((float)(Math.PI / 4), (float)(Bounds.Width / Bounds.Height), 0.01f, 1000); @@ -361,10 +361,10 @@ namespace ControlCatalog.Pages GL.Uniform1f(minYLoc, _minY); GL.Uniform1f(timeLoc, (float)St.Elapsed.TotalSeconds); GL.Uniform1f(discoLoc, _disco); - CheckError(GL); + OpenGlPageControl.CheckError(GL); GL.DrawElements(GL_TRIANGLES, _indices.Length, GL_UNSIGNED_SHORT, IntPtr.Zero); - CheckError(GL); + OpenGlPageControl.CheckError(GL); if (_disco > 0.01) Dispatcher.UIThread.Post(InvalidateVisual, DispatcherPriority.Background); } diff --git a/samples/ControlCatalog/Pages/ScreenPage.cs b/samples/ControlCatalog/Pages/ScreenPage.cs index 823f59e030..841b347d78 100644 --- a/samples/ControlCatalog/Pages/ScreenPage.cs +++ b/samples/ControlCatalog/Pages/ScreenPage.cs @@ -55,21 +55,21 @@ namespace ControlCatalog.Pages context.DrawRectangle(p, workingAreaRect); - var formattedText = CreateFormattedText($"Bounds: {screen.Bounds.Width}:{screen.Bounds.Height}"); + var formattedText = ScreenPage.CreateFormattedText($"Bounds: {screen.Bounds.Width}:{screen.Bounds.Height}"); context.DrawText(formattedText, boundsRect.Position.WithY(boundsRect.Size.Height)); formattedText = - CreateFormattedText($"WorkArea: {screen.WorkingArea.Width}:{screen.WorkingArea.Height}"); + ScreenPage.CreateFormattedText($"WorkArea: {screen.WorkingArea.Width}:{screen.WorkingArea.Height}"); context.DrawText(formattedText, boundsRect.Position.WithY(boundsRect.Size.Height + 20)); - formattedText = CreateFormattedText($"Scaling: {screen.PixelDensity * 100}%"); + formattedText = ScreenPage.CreateFormattedText($"Scaling: {screen.PixelDensity * 100}%"); context.DrawText(formattedText, boundsRect.Position.WithY(boundsRect.Size.Height + 40)); - formattedText = CreateFormattedText($"Primary: {screen.Primary}"); + formattedText = ScreenPage.CreateFormattedText($"Primary: {screen.Primary}"); context.DrawText(formattedText, boundsRect.Position.WithY(boundsRect.Size.Height + 60)); formattedText = - CreateFormattedText( + ScreenPage.CreateFormattedText( $"Current: {screen.Equals(w.Screens.ScreenFromBounds(new PixelRect(w.Position, PixelSize.FromSize(w.Bounds.Size, scaling))))}"); context.DrawText(formattedText, boundsRect.Position.WithY(boundsRect.Size.Height + 80)); } @@ -77,7 +77,7 @@ namespace ControlCatalog.Pages context.DrawRectangle(p, new Rect(w.Position.X / 10f + Math.Abs(_leftMost), w.Position.Y / 10f, w.Bounds.Width / 10, w.Bounds.Height / 10)); } - private FormattedText CreateFormattedText(string textToFormat) + private static FormattedText CreateFormattedText(string textToFormat) { return new FormattedText(textToFormat, CultureInfo.CurrentCulture, FlowDirection.LeftToRight, Typeface.Default, 12, Brushes.Green); diff --git a/samples/ControlCatalog/Pages/TabControlPage.xaml.cs b/samples/ControlCatalog/Pages/TabControlPage.xaml.cs index bd0214c72e..2cc4587dce 100644 --- a/samples/ControlCatalog/Pages/TabControlPage.xaml.cs +++ b/samples/ControlCatalog/Pages/TabControlPage.xaml.cs @@ -14,6 +14,12 @@ namespace ControlCatalog.Pages public class TabControlPage : UserControl { + private static IBitmap LoadBitmap(string uri) + { + var assets = AvaloniaLocator.Current!.GetService()!; + return new Bitmap(assets.Open(new Uri(uri))); + } + public TabControlPage() { InitializeComponent(); @@ -26,13 +32,13 @@ namespace ControlCatalog.Pages { Header = "Arch", Text = "This is the first templated tab page.", - Image = LoadBitmap("avares://ControlCatalog/Assets/delicate-arch-896885_640.jpg"), + Image = TabControlPage.LoadBitmap("avares://ControlCatalog/Assets/delicate-arch-896885_640.jpg"), }, new TabItemViewModel { Header = "Leaf", Text = "This is the second templated tab page.", - Image = LoadBitmap("avares://ControlCatalog/Assets/maple-leaf-888807_640.jpg"), + Image = TabControlPage.LoadBitmap("avares://ControlCatalog/Assets/maple-leaf-888807_640.jpg"), }, new TabItemViewModel { @@ -50,12 +56,6 @@ namespace ControlCatalog.Pages AvaloniaXamlLoader.Load(this); } - private IBitmap LoadBitmap(string uri) - { - var assets = AvaloniaLocator.Current!.GetService()!; - return new Bitmap(assets.Open(new Uri(uri))); - } - private class PageViewModel : ViewModelBase { private Dock _tabPlacement; From 28c033982b17b3f9d9730eca946377207d352458 Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Fri, 14 Oct 2022 17:05:43 +0200 Subject: [PATCH 03/38] feat(Android): Address rule CA1822 --- .../Platform/Specific/Helpers/AndroidKeyboardEventsHelper.cs | 2 +- .../Avalonia.Android/Platform/Storage/AndroidStorageItem.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Android/Avalonia.Android/Platform/Specific/Helpers/AndroidKeyboardEventsHelper.cs b/src/Android/Avalonia.Android/Platform/Specific/Helpers/AndroidKeyboardEventsHelper.cs index 4cae700c0a..9de9841266 100644 --- a/src/Android/Avalonia.Android/Platform/Specific/Helpers/AndroidKeyboardEventsHelper.cs +++ b/src/Android/Avalonia.Android/Platform/Specific/Helpers/AndroidKeyboardEventsHelper.cs @@ -30,7 +30,7 @@ namespace Avalonia.Android.Platform.Specific.Helpers return DispatchKeyEventInternal(e, out callBase); } - string UnicodeTextInput(KeyEvent keyEvent) + static string UnicodeTextInput(KeyEvent keyEvent) { return keyEvent.Action == KeyEventActions.Multiple && keyEvent.RepeatCount == 0 diff --git a/src/Android/Avalonia.Android/Platform/Storage/AndroidStorageItem.cs b/src/Android/Avalonia.Android/Platform/Storage/AndroidStorageItem.cs index a9b2e16d43..078f70db60 100644 --- a/src/Android/Avalonia.Android/Platform/Storage/AndroidStorageItem.cs +++ b/src/Android/Avalonia.Android/Platform/Storage/AndroidStorageItem.cs @@ -178,7 +178,7 @@ internal sealed class AndroidStorageFile : AndroidStorageItem, IStorageBookmarkF return false; } - private Stream? GetVirtualFileStream(Context context, AndroidUri uri, bool isOutput) + private static Stream? GetVirtualFileStream(Context context, AndroidUri uri, bool isOutput) { var mimeTypes = context.ContentResolver?.GetStreamTypes(uri, FilePickerFileTypes.All.MimeTypes![0]); if (mimeTypes?.Length >= 1) From 93998f2a03d214248ca5384b51ca815527d4565c Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Fri, 14 Oct 2022 17:07:00 +0200 Subject: [PATCH 04/38] feat(Base): Address rule CA1822 --- .../Animators/GradientBrushAnimator.cs | 8 ++++---- src/Avalonia.Base/Animation/KeySpline.cs | 8 ++++---- src/Avalonia.Base/Controls/Classes.cs | 18 +++++++++--------- src/Avalonia.Base/Data/Core/ExpressionNode.cs | 4 ++-- .../Parsers/ExpressionVisitorNodeBuilder.cs | 6 +++--- .../Plugins/DataAnnotationsValidationPlugin.cs | 4 ++-- .../Data/Core/Plugins/IndeiValidationPlugin.cs | 4 ++-- .../Data/Core/Plugins/TaskStreamPlugin.cs | 6 +++--- src/Avalonia.Base/Input/DragDropDevice.cs | 16 ++++++++-------- src/Avalonia.Base/Input/KeyGesture.cs | 4 ++-- src/Avalonia.Base/Input/MouseDevice.cs | 6 +++--- src/Avalonia.Base/Input/PenDevice.cs | 4 ++-- src/Avalonia.Base/Input/Pointer.cs | 4 ++-- src/Avalonia.Base/Input/TouchDevice.cs | 8 ++++---- src/Avalonia.Base/Layout/AttachedLayout.cs | 10 +++++----- src/Avalonia.Base/Layout/StackLayout.cs | 8 ++++---- src/Avalonia.Base/Layout/UniformGridLayout.cs | 8 ++++---- src/Avalonia.Base/Platform/AssetLoader.cs | 8 ++++---- .../Animations/KeyFrameAnimationInstance.cs | 12 ++++++------ .../Composition/CompositingRenderer.cs | 6 +++--- .../Rendering/Composition/CompositionTarget.cs | 6 +++--- .../Drawing/CompositionDrawingContext.cs | 14 +++++++------- .../Rendering/DeferredRenderer.cs | 6 +++--- .../Rendering/SceneGraph/SceneBuilder.cs | 6 +++--- 24 files changed, 92 insertions(+), 92 deletions(-) diff --git a/src/Avalonia.Base/Animation/Animators/GradientBrushAnimator.cs b/src/Avalonia.Base/Animation/Animators/GradientBrushAnimator.cs index 4727ea1bfb..f469ea5652 100644 --- a/src/Avalonia.Base/Animation/Animators/GradientBrushAnimator.cs +++ b/src/Avalonia.Base/Animation/Animators/GradientBrushAnimator.cs @@ -28,7 +28,7 @@ namespace Avalonia.Animation.Animators { case IRadialGradientBrush oldRadial when newValue is IRadialGradientBrush newRadial: return new ImmutableRadialGradientBrush( - InterpolateStops(progress, oldValue.GradientStops, newValue.GradientStops), + GradientBrushAnimator.InterpolateStops(progress, oldValue.GradientStops, newValue.GradientStops), s_doubleAnimator.Interpolate(progress, oldValue.Opacity, newValue.Opacity), oldValue.Transform is { } ? new ImmutableTransform(oldValue.Transform.Value) : null, s_relativePointAnimator.Interpolate(progress, oldValue.TransformOrigin, newValue.TransformOrigin), @@ -39,7 +39,7 @@ namespace Avalonia.Animation.Animators case IConicGradientBrush oldConic when newValue is IConicGradientBrush newConic: return new ImmutableConicGradientBrush( - InterpolateStops(progress, oldValue.GradientStops, newValue.GradientStops), + GradientBrushAnimator.InterpolateStops(progress, oldValue.GradientStops, newValue.GradientStops), s_doubleAnimator.Interpolate(progress, oldValue.Opacity, newValue.Opacity), oldValue.Transform is { } ? new ImmutableTransform(oldValue.Transform.Value) : null, s_relativePointAnimator.Interpolate(progress, oldValue.TransformOrigin, newValue.TransformOrigin), @@ -49,7 +49,7 @@ namespace Avalonia.Animation.Animators case ILinearGradientBrush oldLinear when newValue is ILinearGradientBrush newLinear: return new ImmutableLinearGradientBrush( - InterpolateStops(progress, oldValue.GradientStops, newValue.GradientStops), + GradientBrushAnimator.InterpolateStops(progress, oldValue.GradientStops, newValue.GradientStops), s_doubleAnimator.Interpolate(progress, oldValue.Opacity, newValue.Opacity), oldValue.Transform is { } ? new ImmutableTransform(oldValue.Transform.Value) : null, s_relativePointAnimator.Interpolate(progress, oldValue.TransformOrigin, newValue.TransformOrigin), @@ -72,7 +72,7 @@ namespace Avalonia.Animation.Animators return control.Bind((AvaloniaProperty)Property, instance, BindingPriority.Animation); } - private IReadOnlyList InterpolateStops(double progress, IReadOnlyList oldValue, IReadOnlyList newValue) + private static IReadOnlyList InterpolateStops(double progress, IReadOnlyList oldValue, IReadOnlyList newValue) { var resultCount = Math.Max(oldValue.Count, newValue.Count); var stops = new ImmutableGradientStop[resultCount]; diff --git a/src/Avalonia.Base/Animation/KeySpline.cs b/src/Avalonia.Base/Animation/KeySpline.cs index a6e9769186..b33cd6b881 100644 --- a/src/Avalonia.Base/Animation/KeySpline.cs +++ b/src/Avalonia.Base/Animation/KeySpline.cs @@ -98,7 +98,7 @@ namespace Avalonia.Animation get => _controlPointX1; set { - if (IsValidXValue(value)) + if (KeySpline.IsValidXValue(value)) { _controlPointX1 = value; _isDirty = true; @@ -131,7 +131,7 @@ namespace Avalonia.Animation get => _controlPointX2; set { - if (IsValidXValue(value)) + if (KeySpline.IsValidXValue(value)) { _controlPointX2 = value; _isDirty = true; @@ -188,7 +188,7 @@ namespace Avalonia.Animation /// acceptable range; false otherwise. public bool IsValid() { - return IsValidXValue(_controlPointX1) && IsValidXValue(_controlPointX2); + return KeySpline.IsValidXValue(_controlPointX1) && KeySpline.IsValidXValue(_controlPointX2); } /// @@ -196,7 +196,7 @@ namespace Avalonia.Animation /// /// /// - private bool IsValidXValue(double value) + private static bool IsValidXValue(double value) { return value >= 0.0 && value <= 1.0; } diff --git a/src/Avalonia.Base/Controls/Classes.cs b/src/Avalonia.Base/Controls/Classes.cs index c3d3fbca46..100c2b2a8f 100644 --- a/src/Avalonia.Base/Controls/Classes.cs +++ b/src/Avalonia.Base/Controls/Classes.cs @@ -63,7 +63,7 @@ namespace Avalonia.Controls /// public override void Add(string name) { - ThrowIfPseudoclass(name, "added"); + Classes.ThrowIfPseudoclass(name, "added"); if (!Contains(name)) { @@ -87,7 +87,7 @@ namespace Avalonia.Controls foreach (var name in names) { - ThrowIfPseudoclass(name, "added"); + Classes.ThrowIfPseudoclass(name, "added"); if (!Contains(name)) { @@ -127,7 +127,7 @@ namespace Avalonia.Controls /// public override void Insert(int index, string name) { - ThrowIfPseudoclass(name, "added"); + Classes.ThrowIfPseudoclass(name, "added"); if (!Contains(name)) { @@ -152,7 +152,7 @@ namespace Avalonia.Controls foreach (var name in names) { - ThrowIfPseudoclass(name, "added"); + Classes.ThrowIfPseudoclass(name, "added"); if (!Contains(name)) { @@ -180,7 +180,7 @@ namespace Avalonia.Controls /// public override bool Remove(string name) { - ThrowIfPseudoclass(name, "removed"); + Classes.ThrowIfPseudoclass(name, "removed"); if (base.Remove(name)) { @@ -206,7 +206,7 @@ namespace Avalonia.Controls foreach (var name in names) { - ThrowIfPseudoclass(name, "removed"); + Classes.ThrowIfPseudoclass(name, "removed"); toRemove ??= new List(); @@ -232,7 +232,7 @@ namespace Avalonia.Controls public override void RemoveAt(int index) { var name = this[index]; - ThrowIfPseudoclass(name, "removed"); + Classes.ThrowIfPseudoclass(name, "removed"); base.RemoveAt(index); NotifyChanged(); } @@ -258,7 +258,7 @@ namespace Avalonia.Controls foreach (var name in source) { - ThrowIfPseudoclass(name, "added"); + Classes.ThrowIfPseudoclass(name, "added"); } foreach (var name in this) @@ -320,7 +320,7 @@ namespace Avalonia.Controls listener.Changed(); } - private void ThrowIfPseudoclass(string name, string operation) + private static void ThrowIfPseudoclass(string name, string operation) { if (name.StartsWith(":")) { diff --git a/src/Avalonia.Base/Data/Core/ExpressionNode.cs b/src/Avalonia.Base/Data/Core/ExpressionNode.cs index 4f755ff140..d1bc60541c 100644 --- a/src/Avalonia.Base/Data/Core/ExpressionNode.cs +++ b/src/Avalonia.Base/Data/Core/ExpressionNode.cs @@ -138,7 +138,7 @@ namespace Avalonia.Data.Core if (target == null) { - ValueChanged(TargetNullNotification()); + ValueChanged(ExpressionNode.TargetNullNotification()); _listening = false; } else if (target != AvaloniaProperty.UnsetValue) @@ -159,7 +159,7 @@ namespace Avalonia.Data.Core _listening = false; } - private BindingNotification TargetNullNotification() + private static BindingNotification TargetNullNotification() { return new BindingNotification( new MarkupBindingChainException("Null value"), diff --git a/src/Avalonia.Base/Data/Core/Parsers/ExpressionVisitorNodeBuilder.cs b/src/Avalonia.Base/Data/Core/Parsers/ExpressionVisitorNodeBuilder.cs index 1e82214d76..9b9ddf2183 100644 --- a/src/Avalonia.Base/Data/Core/Parsers/ExpressionVisitorNodeBuilder.cs +++ b/src/Avalonia.Base/Data/Core/Parsers/ExpressionVisitorNodeBuilder.cs @@ -70,7 +70,7 @@ namespace Avalonia.Data.Core.Parsers if (node.Indexer == AvaloniaObjectIndexer) { - var property = GetArgumentExpressionValue(node.Arguments[0]); + var property = ExpressionVisitorNodeBuilder.GetArgumentExpressionValue(node.Arguments[0]); Nodes.Add(new AvaloniaPropertyAccessorNode(property, _enableDataValidation)); } else @@ -81,7 +81,7 @@ namespace Avalonia.Data.Core.Parsers return node; } - private T GetArgumentExpressionValue(Expression expr) + private static T GetArgumentExpressionValue(Expression expr) { try { @@ -162,7 +162,7 @@ namespace Avalonia.Data.Core.Parsers if (node.Method == CreateDelegateMethod) { var visited = Visit(node.Arguments[1]); - Nodes.Add(new PropertyAccessorNode(GetArgumentExpressionValue(node.Object!).Name, _enableDataValidation)); + Nodes.Add(new PropertyAccessorNode(ExpressionVisitorNodeBuilder.GetArgumentExpressionValue(node.Object!).Name, _enableDataValidation)); return node; } else if (node.Method.Name == StreamBindingExtensions.StreamBindingName || node.Method.Name.StartsWith(StreamBindingExtensions.StreamBindingName + '`')) diff --git a/src/Avalonia.Base/Data/Core/Plugins/DataAnnotationsValidationPlugin.cs b/src/Avalonia.Base/Data/Core/Plugins/DataAnnotationsValidationPlugin.cs index 361d68dc81..54d5b5ac28 100644 --- a/src/Avalonia.Base/Data/Core/Plugins/DataAnnotationsValidationPlugin.cs +++ b/src/Avalonia.Base/Data/Core/Plugins/DataAnnotationsValidationPlugin.cs @@ -57,13 +57,13 @@ namespace Avalonia.Data.Core.Plugins else { base.InnerValueChanged(new BindingNotification( - CreateException(errors), + Accessor.CreateException(errors), BindingErrorType.DataValidationError, value)); } } - private Exception CreateException(IList errors) + private static Exception CreateException(IList errors) { if (errors.Count == 1) { diff --git a/src/Avalonia.Base/Data/Core/Plugins/IndeiValidationPlugin.cs b/src/Avalonia.Base/Data/Core/Plugins/IndeiValidationPlugin.cs index 1e7a0d5c8f..e45170ff7e 100644 --- a/src/Avalonia.Base/Data/Core/Plugins/IndeiValidationPlugin.cs +++ b/src/Avalonia.Base/Data/Core/Plugins/IndeiValidationPlugin.cs @@ -92,7 +92,7 @@ namespace Avalonia.Data.Core.Plugins if (errors?.Count > 0) { return new BindingNotification( - GenerateException(errors), + Validator.GenerateException(errors), BindingErrorType.DataValidationError, value); } @@ -108,7 +108,7 @@ namespace Avalonia.Data.Core.Plugins return target; } - private Exception GenerateException(IList errors) + private static Exception GenerateException(IList errors) { if (errors.Count == 1) { diff --git a/src/Avalonia.Base/Data/Core/Plugins/TaskStreamPlugin.cs b/src/Avalonia.Base/Data/Core/Plugins/TaskStreamPlugin.cs index 377ea9f275..b25d592597 100644 --- a/src/Avalonia.Base/Data/Core/Plugins/TaskStreamPlugin.cs +++ b/src/Avalonia.Base/Data/Core/Plugins/TaskStreamPlugin.cs @@ -44,11 +44,11 @@ namespace Avalonia.Data.Core.Plugins { case TaskStatus.RanToCompletion: case TaskStatus.Faulted: - return HandleCompleted(task); + return TaskStreamPlugin.HandleCompleted(task); default: var subject = new Subject(); task.ContinueWith( - x => HandleCompleted(task).Subscribe(subject), + x => TaskStreamPlugin.HandleCompleted(task).Subscribe(subject), TaskScheduler.FromCurrentSynchronizationContext()) .ConfigureAwait(false); return subject; @@ -59,7 +59,7 @@ namespace Avalonia.Data.Core.Plugins return Observable.Empty(); } - private IObservable HandleCompleted(Task task) + private static IObservable HandleCompleted(Task task) { var resultProperty = task.GetType().GetRuntimeProperty("Result"); diff --git a/src/Avalonia.Base/Input/DragDropDevice.cs b/src/Avalonia.Base/Input/DragDropDevice.cs index 30a08eda17..16ff428d69 100644 --- a/src/Avalonia.Base/Input/DragDropDevice.cs +++ b/src/Avalonia.Base/Input/DragDropDevice.cs @@ -11,7 +11,7 @@ namespace Avalonia.Input private Interactive? _lastTarget = null; - private Interactive? GetTarget(IInputRoot root, Point local) + private static Interactive? GetTarget(IInputRoot root, Point local) { var target = root.InputHitTest(local)?.GetSelfAndVisualAncestors()?.OfType()?.FirstOrDefault(); if (target != null && DragDrop.GetAllowDrop(target)) @@ -19,7 +19,7 @@ namespace Avalonia.Input return null; } - private DragDropEffects RaiseDragEvent(Interactive? target, IInputRoot inputRoot, Point point, RoutedEvent routedEvent, DragDropEffects operation, IDataObject data, KeyModifiers modifiers) + private static DragDropEffects RaiseDragEvent(Interactive? target, IInputRoot inputRoot, Point point, RoutedEvent routedEvent, DragDropEffects operation, IDataObject data, KeyModifiers modifiers) { if (target == null) return DragDropEffects.None; @@ -40,22 +40,22 @@ namespace Avalonia.Input private DragDropEffects DragEnter(IInputRoot inputRoot, Point point, IDataObject data, DragDropEffects effects, KeyModifiers modifiers) { - _lastTarget = GetTarget(inputRoot, point); - return RaiseDragEvent(_lastTarget, inputRoot, point, DragDrop.DragEnterEvent, effects, data, modifiers); + _lastTarget = DragDropDevice.GetTarget(inputRoot, point); + return DragDropDevice.RaiseDragEvent(_lastTarget, inputRoot, point, DragDrop.DragEnterEvent, effects, data, modifiers); } private DragDropEffects DragOver(IInputRoot inputRoot, Point point, IDataObject data, DragDropEffects effects, KeyModifiers modifiers) { - var target = GetTarget(inputRoot, point); + var target = DragDropDevice.GetTarget(inputRoot, point); if (target == _lastTarget) - return RaiseDragEvent(target, inputRoot, point, DragDrop.DragOverEvent, effects, data, modifiers); + return DragDropDevice.RaiseDragEvent(target, inputRoot, point, DragDrop.DragOverEvent, effects, data, modifiers); try { if (_lastTarget != null) _lastTarget.RaiseEvent(new RoutedEventArgs(DragDrop.DragLeaveEvent)); - return RaiseDragEvent(target, inputRoot, point, DragDrop.DragEnterEvent, effects, data, modifiers); + return DragDropDevice.RaiseDragEvent(target, inputRoot, point, DragDrop.DragEnterEvent, effects, data, modifiers); } finally { @@ -81,7 +81,7 @@ namespace Avalonia.Input { try { - return RaiseDragEvent(_lastTarget, inputRoot, point, DragDrop.DropEvent, effects, data, modifiers); + return DragDropDevice.RaiseDragEvent(_lastTarget, inputRoot, point, DragDrop.DropEvent, effects, data, modifiers); } finally { diff --git a/src/Avalonia.Base/Input/KeyGesture.cs b/src/Avalonia.Base/Input/KeyGesture.cs index 1a6372d346..7f4f69590a 100644 --- a/src/Avalonia.Base/Input/KeyGesture.cs +++ b/src/Avalonia.Base/Input/KeyGesture.cs @@ -138,7 +138,7 @@ namespace Avalonia.Input public bool Matches(KeyEventArgs keyEvent) => keyEvent != null && keyEvent.KeyModifiers == KeyModifiers && - ResolveNumPadOperationKey(keyEvent.Key) == ResolveNumPadOperationKey(Key); + KeyGesture.ResolveNumPadOperationKey(keyEvent.Key) == KeyGesture.ResolveNumPadOperationKey(Key); // TODO: Move that to external key parser private static Key ParseKey(string key) @@ -166,7 +166,7 @@ namespace Avalonia.Input return EnumHelper.Parse(modifier.ToString(), true); } - private Key ResolveNumPadOperationKey(Key key) + private static Key ResolveNumPadOperationKey(Key key) { switch (key) { diff --git a/src/Avalonia.Base/Input/MouseDevice.cs b/src/Avalonia.Base/Input/MouseDevice.cs index 055c9cf1fd..6fb34efdb5 100644 --- a/src/Avalonia.Base/Input/MouseDevice.cs +++ b/src/Avalonia.Base/Input/MouseDevice.cs @@ -34,7 +34,7 @@ namespace Avalonia.Input ProcessRawEvent(margs); } - int ButtonCount(PointerPointProperties props) + static int ButtonCount(PointerPointProperties props) { var rv = 0; if (props.IsLeftButtonPressed) @@ -71,7 +71,7 @@ namespace Avalonia.Input case RawPointerEventType.MiddleButtonDown: case RawPointerEventType.XButton1Down: case RawPointerEventType.XButton2Down: - if (ButtonCount(props) > 1) + if (MouseDevice.ButtonCount(props) > 1) e.Handled = MouseMove(mouse, e.Timestamp, e.Root, e.Position, props, keyModifiers, e.IntermediatePoints, e.InputHitTestResult); else e.Handled = MouseDown(mouse, e.Timestamp, e.Root, e.Position, props, keyModifiers, e.InputHitTestResult); @@ -81,7 +81,7 @@ namespace Avalonia.Input case RawPointerEventType.MiddleButtonUp: case RawPointerEventType.XButton1Up: case RawPointerEventType.XButton2Up: - if (ButtonCount(props) != 0) + if (MouseDevice.ButtonCount(props) != 0) e.Handled = MouseMove(mouse, e.Timestamp, e.Root, e.Position, props, keyModifiers, e.IntermediatePoints, e.InputHitTestResult); else e.Handled = MouseUp(mouse, e.Timestamp, e.Root, e.Position, props, keyModifiers, e.InputHitTestResult); diff --git a/src/Avalonia.Base/Input/PenDevice.cs b/src/Avalonia.Base/Input/PenDevice.cs index f5f0e90a45..876be42be8 100644 --- a/src/Avalonia.Base/Input/PenDevice.cs +++ b/src/Avalonia.Base/Input/PenDevice.cs @@ -56,7 +56,7 @@ namespace Avalonia.Input e.Handled = PenUp(pointer, e.Timestamp, e.Root, e.Position, props, keyModifiers, e.InputHitTestResult); break; case RawPointerEventType.Move: - e.Handled = PenMove(pointer, e.Timestamp, e.Root, e.Position, props, keyModifiers, e.InputHitTestResult, e.IntermediatePoints); + e.Handled = PenDevice.PenMove(pointer, e.Timestamp, e.Root, e.Position, props, keyModifiers, e.InputHitTestResult, e.IntermediatePoints); break; } @@ -98,7 +98,7 @@ namespace Avalonia.Input return false; } - private bool PenMove(Pointer pointer, ulong timestamp, + private static bool PenMove(Pointer pointer, ulong timestamp, IInputRoot root, Point p, PointerPointProperties properties, KeyModifiers inputModifiers, IInputElement? hitTest, Lazy?>? intermediatePoints) diff --git a/src/Avalonia.Base/Input/Pointer.cs b/src/Avalonia.Base/Input/Pointer.cs index 3012f07f6a..be93d9d6b8 100644 --- a/src/Avalonia.Base/Input/Pointer.cs +++ b/src/Avalonia.Base/Input/Pointer.cs @@ -19,7 +19,7 @@ namespace Avalonia.Input public int Id { get; } - IInputElement? FindCommonParent(IInputElement? control1, IInputElement? control2) + static IInputElement? FindCommonParent(IInputElement? control1, IInputElement? control2) { if (control1 == null || control2 == null) return null; @@ -41,7 +41,7 @@ namespace Avalonia.Input PlatformCapture(control); if (oldCapture != null) { - var commonParent = FindCommonParent(control, oldCapture); + var commonParent = Pointer.FindCommonParent(control, oldCapture); foreach (var notifyTarget in oldCapture.GetSelfAndVisualAncestors().OfType()) { if (notifyTarget == commonParent) diff --git a/src/Avalonia.Base/Input/TouchDevice.cs b/src/Avalonia.Base/Input/TouchDevice.cs index 1d5b1d6bbf..b709b7d0cd 100644 --- a/src/Avalonia.Base/Input/TouchDevice.cs +++ b/src/Avalonia.Base/Input/TouchDevice.cs @@ -20,7 +20,7 @@ namespace Avalonia.Input private Rect _lastClickRect; private ulong _lastClickTime; - RawInputModifiers GetModifiers(RawInputModifiers modifiers, bool isLeftButtonDown) + static RawInputModifiers GetModifiers(RawInputModifiers modifiers, bool isLeftButtonDown) { var rv = modifiers &= RawInputModifiers.KeyboardMask; if (isLeftButtonDown) @@ -73,7 +73,7 @@ namespace Avalonia.Input target.RaiseEvent(new PointerPressedEventArgs(target, pointer, args.Root, args.Position, ev.Timestamp, - new PointerPointProperties(GetModifiers(args.InputModifiers, true), updateKind), + new PointerPointProperties(TouchDevice.GetModifiers(args.InputModifiers, true), updateKind), keyModifier, _clickCount)); } @@ -84,7 +84,7 @@ namespace Avalonia.Input { target.RaiseEvent(new PointerReleasedEventArgs(target, pointer, args.Root, args.Position, ev.Timestamp, - new PointerPointProperties(GetModifiers(args.InputModifiers, false), updateKind), + new PointerPointProperties(TouchDevice.GetModifiers(args.InputModifiers, false), updateKind), keyModifier, MouseButton.Left)); } } @@ -100,7 +100,7 @@ namespace Avalonia.Input { target.RaiseEvent(new PointerEventArgs(InputElement.PointerMovedEvent, target, pointer, args.Root, args.Position, ev.Timestamp, - new PointerPointProperties(GetModifiers(args.InputModifiers, true), updateKind), + new PointerPointProperties(TouchDevice.GetModifiers(args.InputModifiers, true), updateKind), keyModifier, args.IntermediatePoints)); } } diff --git a/src/Avalonia.Base/Layout/AttachedLayout.cs b/src/Avalonia.Base/Layout/AttachedLayout.cs index ece8bbe805..594fc04842 100644 --- a/src/Avalonia.Base/Layout/AttachedLayout.cs +++ b/src/Avalonia.Base/Layout/AttachedLayout.cs @@ -67,7 +67,7 @@ namespace Avalonia.Layout { if (this is VirtualizingLayout virtualizingLayout) { - var virtualizingContext = GetVirtualizingLayoutContext(context); + var virtualizingContext = AttachedLayout.GetVirtualizingLayoutContext(context); virtualizingLayout.InitializeForContextCore(virtualizingContext); } else if (this is NonVirtualizingLayout nonVirtualizingLayout) @@ -92,7 +92,7 @@ namespace Avalonia.Layout { if (this is VirtualizingLayout virtualizingLayout) { - var virtualizingContext = GetVirtualizingLayoutContext(context); + var virtualizingContext = AttachedLayout.GetVirtualizingLayoutContext(context); virtualizingLayout.UninitializeForContextCore(virtualizingContext); } else if (this is NonVirtualizingLayout nonVirtualizingLayout) @@ -126,7 +126,7 @@ namespace Avalonia.Layout { if (this is VirtualizingLayout virtualizingLayout) { - var virtualizingContext = GetVirtualizingLayoutContext(context); + var virtualizingContext = AttachedLayout.GetVirtualizingLayoutContext(context); return virtualizingLayout.MeasureOverride(virtualizingContext, availableSize); } else if (this is NonVirtualizingLayout nonVirtualizingLayout) @@ -157,7 +157,7 @@ namespace Avalonia.Layout { if (this is VirtualizingLayout virtualizingLayout) { - var virtualizingContext = GetVirtualizingLayoutContext(context); + var virtualizingContext = AttachedLayout.GetVirtualizingLayoutContext(context); return virtualizingLayout.ArrangeOverride(virtualizingContext, finalSize); } else if (this is NonVirtualizingLayout nonVirtualizingLayout) @@ -184,7 +184,7 @@ namespace Avalonia.Layout /// protected void InvalidateArrange() => ArrangeInvalidated?.Invoke(this, EventArgs.Empty); - private VirtualizingLayoutContext GetVirtualizingLayoutContext(LayoutContext context) + private static VirtualizingLayoutContext GetVirtualizingLayoutContext(LayoutContext context) { if (context is VirtualizingLayoutContext virtualizingContext) { diff --git a/src/Avalonia.Base/Layout/StackLayout.cs b/src/Avalonia.Base/Layout/StackLayout.cs index e3c2ab3817..7983b37843 100644 --- a/src/Avalonia.Base/Layout/StackLayout.cs +++ b/src/Avalonia.Base/Layout/StackLayout.cs @@ -90,7 +90,7 @@ namespace Avalonia.Layout // Constants int itemsCount = context.ItemCount; var stackState = (StackLayoutState)context.LayoutState!; - double averageElementSize = GetAverageElementSize(availableSize, context, stackState) + Spacing; + double averageElementSize = StackLayout.GetAverageElementSize(availableSize, context, stackState) + Spacing; _orientation.SetMinorSize(ref extent, stackState.MaxArrangeBounds); _orientation.SetMajorSize(ref extent, Math.Max(0.0f, itemsCount * averageElementSize - Spacing)); @@ -178,7 +178,7 @@ namespace Avalonia.Layout { index = targetIndex; var state = (StackLayoutState)context.LayoutState!; - double averageElementSize = GetAverageElementSize(availableSize, context, state) + Spacing; + double averageElementSize = StackLayout.GetAverageElementSize(availableSize, context, state) + Spacing; offset = index * averageElementSize + _orientation.MajorStart(state.FlowAlgorithm.LastExtent); } @@ -237,7 +237,7 @@ namespace Avalonia.Layout var state = (StackLayoutState)context.LayoutState!; var lastExtent = state.FlowAlgorithm.LastExtent; - double averageElementSize = GetAverageElementSize(availableSize, context, state) + Spacing; + double averageElementSize = StackLayout.GetAverageElementSize(availableSize, context, state) + Spacing; double realizationWindowOffsetInExtent = _orientation.MajorStart(realizationRect) - _orientation.MajorStart(lastExtent); double majorSize = _orientation.MajorSize(lastExtent) == 0 ? Math.Max(0.0, averageElementSize * itemsCount - Spacing) : _orientation.MajorSize(lastExtent); if (itemsCount > 0 && @@ -335,7 +335,7 @@ namespace Avalonia.Layout InvalidateLayout(); } - private double GetAverageElementSize( + private static double GetAverageElementSize( Size availableSize, VirtualizingLayoutContext context, StackLayoutState stackLayoutState) diff --git a/src/Avalonia.Base/Layout/UniformGridLayout.cs b/src/Avalonia.Base/Layout/UniformGridLayout.cs index a7880a1545..acb333bcfa 100644 --- a/src/Avalonia.Base/Layout/UniformGridLayout.cs +++ b/src/Avalonia.Base/Layout/UniformGridLayout.cs @@ -432,7 +432,7 @@ namespace Avalonia.Layout var gridState = (UniformGridLayoutState)context.LayoutState!; gridState.EnsureElementSize(availableSize, context, _minItemWidth, _minItemHeight, _itemsStretch, Orientation, MinRowSpacing, MinColumnSpacing, _maximumRowsOrColumns); - var desiredSize = GetFlowAlgorithm(context).Measure( + var desiredSize = UniformGridLayout.GetFlowAlgorithm(context).Measure( availableSize, context, true, @@ -452,7 +452,7 @@ namespace Avalonia.Layout protected internal override Size ArrangeOverride(VirtualizingLayoutContext context, Size finalSize) { - var value = GetFlowAlgorithm(context).Arrange( + var value = UniformGridLayout.GetFlowAlgorithm(context).Arrange( finalSize, context, true, @@ -463,7 +463,7 @@ namespace Avalonia.Layout protected internal override void OnItemsChangedCore(VirtualizingLayoutContext context, object? source, NotifyCollectionChangedEventArgs args) { - GetFlowAlgorithm(context).OnItemsSourceChanged(source, args, context); + UniformGridLayout.GetFlowAlgorithm(context).OnItemsSourceChanged(source, args, context); // Always invalidate layout to keep the view accurate. InvalidateLayout(); @@ -557,6 +557,6 @@ namespace Avalonia.Layout private void InvalidateLayout() => InvalidateMeasure(); - private FlowLayoutAlgorithm GetFlowAlgorithm(VirtualizingLayoutContext context) => ((UniformGridLayoutState)context.LayoutState!).FlowAlgorithm; + private static FlowLayoutAlgorithm GetFlowAlgorithm(VirtualizingLayoutContext context) => ((UniformGridLayoutState)context.LayoutState!).FlowAlgorithm; } } diff --git a/src/Avalonia.Base/Platform/AssetLoader.cs b/src/Avalonia.Base/Platform/AssetLoader.cs index a74da2a178..77ae9f4c32 100644 --- a/src/Avalonia.Base/Platform/AssetLoader.cs +++ b/src/Avalonia.Base/Platform/AssetLoader.cs @@ -126,7 +126,7 @@ namespace Avalonia.Platform uri = uri.EnsureAbsolute(baseUri); if (uri.IsAvares()) { - var (asm, path) = GetResAsmAndPath(uri); + var (asm, path) = AssetLoader.GetResAsmAndPath(uri); if (asm == null) { throw new ArgumentException( @@ -171,7 +171,7 @@ namespace Avalonia.Platform if (uri.IsAvares()) { - var (asm, path) = GetResAsmAndPath(uri); + var (asm, path) = AssetLoader.GetResAsmAndPath(uri); if (asm.AvaloniaResources == null) return null; asm.AvaloniaResources.TryGetValue(path, out var desc); @@ -181,7 +181,7 @@ namespace Avalonia.Platform throw new ArgumentException($"Unsupported url type: " + uri.Scheme, nameof(uri)); } - private (IAssemblyDescriptor asm, string path) GetResAsmAndPath(Uri uri) + private static (IAssemblyDescriptor asm, string path) GetResAsmAndPath(Uri uri) { var asm = s_assemblyDescriptorResolver.GetAssembly(uri.Authority); return (asm, uri.GetUnescapeAbsolutePath()); @@ -194,7 +194,7 @@ namespace Avalonia.Platform if (!uri.IsAbsoluteUri) return null; if (uri.IsAvares()) - return GetResAsmAndPath(uri).asm; + return AssetLoader.GetResAsmAndPath(uri).asm; if (uri.IsResm()) { diff --git a/src/Avalonia.Base/Rendering/Composition/Animations/KeyFrameAnimationInstance.cs b/src/Avalonia.Base/Rendering/Composition/Animations/KeyFrameAnimationInstance.cs index e20a4a9ad8..2b395f54af 100644 --- a/src/Avalonia.Base/Rendering/Composition/Animations/KeyFrameAnimationInstance.cs +++ b/src/Avalonia.Base/Rendering/Composition/Animations/KeyFrameAnimationInstance.cs @@ -87,7 +87,7 @@ namespace Avalonia.Rendering.Composition.Animations if (elapsed < _delayTime) { if (_delayBehavior == AnimationDelayBehavior.SetInitialValueBeforeDelay) - return ExpressionVariant.Create(GetKeyFrame(ref ctx, _keyFrames[0])); + return ExpressionVariant.Create(KeyFrameAnimationInstance.GetKeyFrame(ref ctx, _keyFrames[0])); return currentValue; } @@ -95,7 +95,7 @@ namespace Avalonia.Rendering.Composition.Animations var iterationNumber = elapsed.Ticks / _duration.Ticks; if (_iterationBehavior == AnimationIterationBehavior.Count && iterationNumber >= _iterationCount) - return ExpressionVariant.Create(GetKeyFrame(ref ctx, _keyFrames[_keyFrames.Length - 1])); + return ExpressionVariant.Create(KeyFrameAnimationInstance.GetKeyFrame(ref ctx, _keyFrames[_keyFrames.Length - 1])); var evenIterationNumber = iterationNumber % 2 == 0; @@ -124,7 +124,7 @@ namespace Avalonia.Rendering.Composition.Animations { // this is the last frame if (c == _keyFrames.Length - 1) - return ExpressionVariant.Create(GetKeyFrame(ref ctx, kf)); + return ExpressionVariant.Create(KeyFrameAnimationInstance.GetKeyFrame(ref ctx, kf)); left = kf; right = _keyFrames[c + 1]; @@ -139,13 +139,13 @@ namespace Avalonia.Rendering.Composition.Animations return currentValue; return ExpressionVariant.Create(_interpolator.Interpolate( - GetKeyFrame(ref ctx, left), - GetKeyFrame(ref ctx, right), + KeyFrameAnimationInstance.GetKeyFrame(ref ctx, left), + KeyFrameAnimationInstance.GetKeyFrame(ref ctx, right), easedKeyProgress )); } - T GetKeyFrame(ref ExpressionEvaluationContext ctx, ServerKeyFrame f) + static T GetKeyFrame(ref ExpressionEvaluationContext ctx, ServerKeyFrame f) { if (f.Expression != null) return f.Expression.Evaluate(ref ctx).CastOrDefault(); diff --git a/src/Avalonia.Base/Rendering/Composition/CompositingRenderer.cs b/src/Avalonia.Base/Rendering/Composition/CompositingRenderer.cs index 98a6a3600e..3c9a9feac0 100644 --- a/src/Avalonia.Base/Rendering/Composition/CompositingRenderer.cs +++ b/src/Avalonia.Base/Rendering/Composition/CompositingRenderer.cs @@ -124,7 +124,7 @@ public class CompositingRenderer : IRendererWithCompositor QueueUpdate(); } - private void SyncChildren(Visual v) + private static void SyncChildren(Visual v) { //TODO: Optimize by moving that logic to Visual itself if(v.CompositionVisual == null) @@ -233,11 +233,11 @@ public class CompositingRenderer : IRendererWithCompositor visual.Render(_recordingContext); comp.DrawList = _recorder.EndUpdate(); - SyncChildren(visual); + CompositingRenderer.SyncChildren(visual); } foreach(var v in _recalculateChildren) if (!_dirty.Contains(v)) - SyncChildren(v); + CompositingRenderer.SyncChildren(v); _dirty.Clear(); _recalculateChildren.Clear(); CompositionTarget.Size = _root.ClientSize; diff --git a/src/Avalonia.Base/Rendering/Composition/CompositionTarget.cs b/src/Avalonia.Base/Rendering/Composition/CompositionTarget.cs index d8a608651b..52215e8011 100644 --- a/src/Avalonia.Base/Rendering/Composition/CompositionTarget.cs +++ b/src/Avalonia.Base/Rendering/Composition/CompositionTarget.cs @@ -53,7 +53,7 @@ namespace Avalonia.Rendering.Composition var m = Matrix.Identity; while (v != null) { - if (!TryGetInvertedTransform(v, out var cm)) + if (!CompositionTarget.TryGetInvertedTransform(v, out var cm)) return null; m = m * cm; v = v.Parent; @@ -62,7 +62,7 @@ namespace Avalonia.Rendering.Composition return point * m; } - bool TryGetInvertedTransform(CompositionVisual visual, out Matrix matrix) + static bool TryGetInvertedTransform(CompositionVisual visual, out Matrix matrix) { var m = visual.TryGetServerGlobalTransform(); if (m == null) @@ -78,7 +78,7 @@ namespace Avalonia.Rendering.Composition bool TryTransformTo(CompositionVisual visual, Point globalPoint, out Point v) { v = default; - if (TryGetInvertedTransform(visual, out var m)) + if (CompositionTarget.TryGetInvertedTransform(visual, out var m)) { v = globalPoint * m; return true; diff --git a/src/Avalonia.Base/Rendering/Composition/Drawing/CompositionDrawingContext.cs b/src/Avalonia.Base/Rendering/Composition/Drawing/CompositionDrawingContext.cs index 30b57883fc..c02eb5687f 100644 --- a/src/Avalonia.Base/Rendering/Composition/Drawing/CompositionDrawingContext.cs +++ b/src/Avalonia.Base/Rendering/Composition/Drawing/CompositionDrawingContext.cs @@ -55,7 +55,7 @@ internal class CompositionDrawingContext : IDrawingContextImpl, IDrawingContextW if (next == null || !next.Item.Equals(Transform, brush, pen, geometry)) { - Add(new GeometryNode(Transform, brush, pen, geometry, CreateChildScene(brush))); + Add(new GeometryNode(Transform, brush, pen, geometry, CompositionDrawingContext.CreateChildScene(brush))); } else { @@ -94,7 +94,7 @@ internal class CompositionDrawingContext : IDrawingContextImpl, IDrawingContextW if (next == null || !next.Item.Equals(Transform, pen, p1, p2)) { - Add(new LineNode(Transform, pen, p1, p2, CreateChildScene(pen.Brush))); + Add(new LineNode(Transform, pen, p1, p2, CompositionDrawingContext.CreateChildScene(pen.Brush))); } else { @@ -110,7 +110,7 @@ internal class CompositionDrawingContext : IDrawingContextImpl, IDrawingContextW if (next == null || !next.Item.Equals(Transform, brush, pen, rect, boxShadows)) { - Add(new RectangleNode(Transform, brush, pen, rect, boxShadows, CreateChildScene(brush))); + Add(new RectangleNode(Transform, brush, pen, rect, boxShadows, CompositionDrawingContext.CreateChildScene(brush))); } else { @@ -139,7 +139,7 @@ internal class CompositionDrawingContext : IDrawingContextImpl, IDrawingContextW if (next == null || !next.Item.Equals(Transform, brush, pen, rect)) { - Add(new EllipseNode(Transform, brush, pen, rect, CreateChildScene(brush))); + Add(new EllipseNode(Transform, brush, pen, rect, CompositionDrawingContext.CreateChildScene(brush))); } else { @@ -165,7 +165,7 @@ internal class CompositionDrawingContext : IDrawingContextImpl, IDrawingContextW if (next == null || !next.Item.Equals(Transform, foreground, glyphRun)) { - Add(new GlyphRunNode(Transform, foreground, glyphRun, CreateChildScene(foreground))); + Add(new GlyphRunNode(Transform, foreground, glyphRun, CompositionDrawingContext.CreateChildScene(foreground))); } else @@ -324,7 +324,7 @@ internal class CompositionDrawingContext : IDrawingContextImpl, IDrawingContextW if (next == null || !next.Item.Equals(mask, bounds)) { - Add(new OpacityMaskNode(mask, bounds, CreateChildScene(mask))); + Add(new OpacityMaskNode(mask, bounds, CompositionDrawingContext.CreateChildScene(mask))); } else { @@ -368,7 +368,7 @@ internal class CompositionDrawingContext : IDrawingContextImpl, IDrawingContextW : null; } - private IDisposable? CreateChildScene(IBrush? brush) + private static IDisposable? CreateChildScene(IBrush? brush) { if (brush is VisualBrush visualBrush) { diff --git a/src/Avalonia.Base/Rendering/DeferredRenderer.cs b/src/Avalonia.Base/Rendering/DeferredRenderer.cs index 4236763e3b..1eefa5a177 100644 --- a/src/Avalonia.Base/Rendering/DeferredRenderer.cs +++ b/src/Avalonia.Base/Rendering/DeferredRenderer.cs @@ -272,18 +272,18 @@ namespace Avalonia.Rendering } } - Scene? TryGetChildScene(IRef? op) => (op?.Item as BrushDrawOperation)?.Aux as Scene; + static Scene? TryGetChildScene(IRef? op) => (op?.Item as BrushDrawOperation)?.Aux as Scene; /// Size IVisualBrushRenderer.GetRenderTargetSize(IVisualBrush brush) { - return TryGetChildScene(_currentDraw)?.Size ?? Size.Empty; + return DeferredRenderer.TryGetChildScene(_currentDraw)?.Size ?? Size.Empty; } /// void IVisualBrushRenderer.RenderVisualBrush(IDrawingContextImpl context, IVisualBrush brush) { - var childScene = TryGetChildScene(_currentDraw); + var childScene = DeferredRenderer.TryGetChildScene(_currentDraw); if (childScene != null) { diff --git a/src/Avalonia.Base/Rendering/SceneGraph/SceneBuilder.cs b/src/Avalonia.Base/Rendering/SceneGraph/SceneBuilder.cs index 0ceb44ed75..a34cce8796 100644 --- a/src/Avalonia.Base/Rendering/SceneGraph/SceneBuilder.cs +++ b/src/Avalonia.Base/Rendering/SceneGraph/SceneBuilder.cs @@ -18,7 +18,7 @@ namespace Avalonia.Rendering.SceneGraph _ = scene ?? throw new ArgumentNullException(nameof(scene)); Dispatcher.UIThread.VerifyAccess(); - UpdateSize(scene); + SceneBuilder.UpdateSize(scene); scene.Layers.GetOrAdd(scene.Root.Visual); using (var impl = new DeferredDrawingContextImpl(this, scene.Layers)) @@ -46,7 +46,7 @@ namespace Avalonia.Rendering.SceneGraph if (visual == scene.Root.Visual) { - UpdateSize(scene); + SceneBuilder.UpdateSize(scene); } if (visual.VisualRoot == scene.Root.Visual) @@ -318,7 +318,7 @@ namespace Avalonia.Rendering.SceneGraph } } - private void UpdateSize(Scene scene) + private static void UpdateSize(Scene scene) { var renderRoot = scene.Root.Visual as IRenderRoot; var newSize = renderRoot?.ClientSize ?? scene.Root.Visual.Bounds.Size; From ee84a8c7fd242a76353aad24d83d483d344f6b83 Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Fri, 14 Oct 2022 17:08:25 +0200 Subject: [PATCH 05/38] feat(Controls): Address rule CA1822 --- .../Automation/Peers/ComboBoxAutomationPeer.cs | 8 ++++---- .../Calendar/CalendarBlackoutDatesCollection.cs | 10 +++++----- .../Calendar/SelectedDatesCollection.cs | 10 +++++----- src/Avalonia.Controls/ComboBox.cs | 8 ++++---- .../DateTimePickers/DateTimePickerPanel.cs | 6 +++--- src/Avalonia.Controls/Grid.cs | 6 +++--- src/Avalonia.Controls/GridSplitter.cs | 16 ++++++++-------- .../Platform/InProcessDragSource.cs | 4 ++-- .../Presenters/ScrollContentPresenter.cs | 8 ++++---- src/Avalonia.Controls/Primitives/AdornerLayer.cs | 4 ++-- src/Avalonia.Controls/Primitives/Popup.cs | 4 ++-- src/Avalonia.Controls/Repeater/RecyclePool.cs | 10 +++++----- .../Repeater/RecyclingElementFactory.cs | 4 ++-- src/Avalonia.Controls/SplitView.cs | 6 +++--- src/Avalonia.Controls/TextBox.cs | 10 +++++----- src/Avalonia.Controls/TopLevel.cs | 4 ++-- src/Avalonia.Controls/TreeView.cs | 6 +++--- src/Avalonia.Controls/UserControl.cs | 1 - 18 files changed, 62 insertions(+), 63 deletions(-) diff --git a/src/Avalonia.Controls/Automation/Peers/ComboBoxAutomationPeer.cs b/src/Avalonia.Controls/Automation/Peers/ComboBoxAutomationPeer.cs index 5ff291d972..d6295fdbd9 100644 --- a/src/Avalonia.Controls/Automation/Peers/ComboBoxAutomationPeer.cs +++ b/src/Avalonia.Controls/Automation/Peers/ComboBoxAutomationPeer.cs @@ -18,7 +18,7 @@ namespace Avalonia.Automation.Peers public new ComboBox Owner => (ComboBox)base.Owner; - public ExpandCollapseState ExpandCollapseState => ToState(Owner.IsDropDownOpen); + public ExpandCollapseState ExpandCollapseState => ComboBoxAutomationPeer.ToState(Owner.IsDropDownOpen); public bool ShowsMenu => true; public void Collapse() => Owner.IsDropDownOpen = false; public void Expand() => Owner.IsDropDownOpen = true; @@ -66,12 +66,12 @@ namespace Avalonia.Automation.Peers { RaisePropertyChangedEvent( ExpandCollapsePatternIdentifiers.ExpandCollapseStateProperty, - ToState((bool)e.OldValue!), - ToState((bool)e.NewValue!)); + ComboBoxAutomationPeer.ToState((bool)e.OldValue!), + ComboBoxAutomationPeer.ToState((bool)e.NewValue!)); } } - private ExpandCollapseState ToState(bool value) + private static ExpandCollapseState ToState(bool value) { return value ? ExpandCollapseState.Expanded : ExpandCollapseState.Collapsed; } diff --git a/src/Avalonia.Controls/Calendar/CalendarBlackoutDatesCollection.cs b/src/Avalonia.Controls/Calendar/CalendarBlackoutDatesCollection.cs index a92feec509..61463795ee 100644 --- a/src/Avalonia.Controls/Calendar/CalendarBlackoutDatesCollection.cs +++ b/src/Avalonia.Controls/Calendar/CalendarBlackoutDatesCollection.cs @@ -122,7 +122,7 @@ namespace Avalonia.Controls.Primitives /// protected override void ClearItems() { - EnsureValidThread(); + CalendarBlackoutDatesCollection.EnsureValidThread(); base.ClearItems(); _owner.UpdateMonths(); @@ -140,7 +140,7 @@ namespace Avalonia.Controls.Primitives /// protected override void InsertItem(int index, CalendarDateRange item) { - EnsureValidThread(); + CalendarBlackoutDatesCollection.EnsureValidThread(); if (!IsValid(item)) { @@ -162,7 +162,7 @@ namespace Avalonia.Controls.Primitives /// protected override void RemoveItem(int index) { - EnsureValidThread(); + CalendarBlackoutDatesCollection.EnsureValidThread(); base.RemoveItem(index); _owner.UpdateMonths(); @@ -182,7 +182,7 @@ namespace Avalonia.Controls.Primitives /// protected override void SetItem(int index, CalendarDateRange item) { - EnsureValidThread(); + CalendarBlackoutDatesCollection.EnsureValidThread(); if (!IsValid(item)) { @@ -206,7 +206,7 @@ namespace Avalonia.Controls.Primitives return true; } - private void EnsureValidThread() + private static void EnsureValidThread() { Dispatcher.UIThread.VerifyAccess(); } diff --git a/src/Avalonia.Controls/Calendar/SelectedDatesCollection.cs b/src/Avalonia.Controls/Calendar/SelectedDatesCollection.cs index 211b5edb0d..8327442fcf 100644 --- a/src/Avalonia.Controls/Calendar/SelectedDatesCollection.cs +++ b/src/Avalonia.Controls/Calendar/SelectedDatesCollection.cs @@ -133,7 +133,7 @@ namespace Avalonia.Controls.Primitives /// protected override void ClearItems() { - EnsureValidThread(); + SelectedDatesCollection.EnsureValidThread(); Collection addedItems = new Collection(); Collection removedItems = new Collection(); @@ -170,7 +170,7 @@ namespace Avalonia.Controls.Primitives /// protected override void InsertItem(int index, DateTime item) { - EnsureValidThread(); + SelectedDatesCollection.EnsureValidThread(); if (!Contains(item)) { @@ -233,7 +233,7 @@ namespace Avalonia.Controls.Primitives /// protected override void RemoveItem(int index) { - EnsureValidThread(); + SelectedDatesCollection.EnsureValidThread(); if (index >= Count) { @@ -284,7 +284,7 @@ namespace Avalonia.Controls.Primitives /// protected override void SetItem(int index, DateTime item) { - EnsureValidThread(); + SelectedDatesCollection.EnsureValidThread(); if (!Contains(item)) { @@ -353,7 +353,7 @@ namespace Avalonia.Controls.Primitives return true; } - private void EnsureValidThread() + private static void EnsureValidThread() { Dispatcher.UIThread.VerifyAccess(); } diff --git a/src/Avalonia.Controls/ComboBox.cs b/src/Avalonia.Controls/ComboBox.cs index 54196bdf1a..21918b27a8 100644 --- a/src/Avalonia.Controls/ComboBox.cs +++ b/src/Avalonia.Controls/ComboBox.cs @@ -236,7 +236,7 @@ namespace Avalonia.Controls else if (IsDropDownOpen && SelectedIndex < 0 && ItemCount > 0 && (e.Key == Key.Up || e.Key == Key.Down) && IsFocused == true) { - var firstChild = Presenter?.Panel?.Children.FirstOrDefault(c => CanFocus(c)); + var firstChild = Presenter?.Panel?.Children.FirstOrDefault(c => ComboBox.CanFocus(c)); if (firstChild != null) { FocusManager.Instance?.Focus(firstChild, NavigationMethod.Directional); @@ -341,7 +341,7 @@ namespace Avalonia.Controls { _subscriptionsOnOpen.Clear(); - if (CanFocus(this)) + if (ComboBox.CanFocus(this)) { Focus(); } @@ -403,14 +403,14 @@ namespace Avalonia.Controls container = ItemContainerGenerator.ContainerFromIndex(selectedIndex); } - if (container != null && CanFocus(container)) + if (container != null && ComboBox.CanFocus(container)) { container.Focus(); } } } - private bool CanFocus(IControl control) => control.Focusable && control.IsEffectivelyEnabled && control.IsVisible; + private static bool CanFocus(IControl control) => control.Focusable && control.IsEffectivelyEnabled && control.IsVisible; private void UpdateSelectionBoxItem(object? item) { diff --git a/src/Avalonia.Controls/DateTimePickers/DateTimePickerPanel.cs b/src/Avalonia.Controls/DateTimePickers/DateTimePickerPanel.cs index 3fdfbee54d..eb4a7391b0 100644 --- a/src/Avalonia.Controls/DateTimePickers/DateTimePickerPanel.cs +++ b/src/Avalonia.Controls/DateTimePickers/DateTimePickerPanel.cs @@ -545,8 +545,8 @@ namespace Avalonia.Controls.Primitives private void OnItemTapped(object? sender, TappedEventArgs e) { - if (e.Source is IVisual source && - GetItemFromSource(source) is ListBoxItem listBoxItem && + if (e.Source is IVisual source && + DateTimePickerPanel.GetItemFromSource(source) is ListBoxItem listBoxItem && listBoxItem.Tag is int tag) { SelectedValue = tag; @@ -555,7 +555,7 @@ namespace Avalonia.Controls.Primitives } //Helper to get ListBoxItem from pointerevent source - private ListBoxItem? GetItemFromSource(IVisual src) + private static ListBoxItem? GetItemFromSource(IVisual src) { var item = src; while (item != null && !(item is ListBoxItem)) diff --git a/src/Avalonia.Controls/Grid.cs b/src/Avalonia.Controls/Grid.cs index 8d246d35f4..4dc88fec6a 100644 --- a/src/Avalonia.Controls/Grid.cs +++ b/src/Avalonia.Controls/Grid.cs @@ -1117,7 +1117,7 @@ namespace Avalonia.Controls else { // otherwise... - cellMeasureWidth = GetMeasureSizeForRange( + cellMeasureWidth = Grid.GetMeasureSizeForRange( DefinitionsU, PrivateCells[cell].ColumnIndex, PrivateCells[cell].ColumnSpan); @@ -1137,7 +1137,7 @@ namespace Avalonia.Controls } else { - cellMeasureHeight = GetMeasureSizeForRange( + cellMeasureHeight = Grid.GetMeasureSizeForRange( DefinitionsV, PrivateCells[cell].RowIndex, PrivateCells[cell].RowSpan); @@ -1165,7 +1165,7 @@ namespace Avalonia.Controls /// /// For "Auto" definitions MinWidth is used in place of PreferredSize. /// - private double GetMeasureSizeForRange( + private static double GetMeasureSizeForRange( IReadOnlyList definitions, int start, int count) diff --git a/src/Avalonia.Controls/GridSplitter.cs b/src/Avalonia.Controls/GridSplitter.cs index 85dad894fd..1a4736fa92 100644 --- a/src/Avalonia.Controls/GridSplitter.cs +++ b/src/Avalonia.Controls/GridSplitter.cs @@ -288,13 +288,13 @@ namespace Avalonia.Controls _resizeData.Definition1 = GetGridDefinition(_resizeData.Grid, index1, _resizeData.ResizeDirection); _resizeData.OriginalDefinition1Length = _resizeData.Definition1.UserSizeValueCache; // Save Size if user cancels. - _resizeData.OriginalDefinition1ActualLength = GetActualLength(_resizeData.Definition1); + _resizeData.OriginalDefinition1ActualLength = GridSplitter.GetActualLength(_resizeData.Definition1); _resizeData.Definition2Index = index2; _resizeData.Definition2 = GetGridDefinition(_resizeData.Grid, index2, _resizeData.ResizeDirection); _resizeData.OriginalDefinition2Length = _resizeData.Definition2.UserSizeValueCache; // Save Size if user cancels. - _resizeData.OriginalDefinition2ActualLength = GetActualLength(_resizeData.Definition2); + _resizeData.OriginalDefinition2ActualLength = GridSplitter.GetActualLength(_resizeData.Definition2); // Determine how to resize the columns. bool isStar1 = IsStar(_resizeData.Definition1); @@ -516,7 +516,7 @@ namespace Avalonia.Controls /// /// Retrieves the ActualWidth or ActualHeight of the definition depending on its type Column or Row. /// - private double GetActualLength(DefinitionBase definition) + private static double GetActualLength(DefinitionBase definition) { var column = definition as ColumnDefinition; @@ -537,11 +537,11 @@ namespace Avalonia.Controls /// private void GetDeltaConstraints(out double minDelta, out double maxDelta) { - double definition1Len = GetActualLength(_resizeData!.Definition1!); + double definition1Len = GridSplitter.GetActualLength(_resizeData!.Definition1!); double definition1Min = _resizeData.Definition1!.UserMinSizeValueCache; double definition1Max = _resizeData.Definition1.UserMaxSizeValueCache; - double definition2Len = GetActualLength(_resizeData.Definition2!); + double definition2Len = GridSplitter.GetActualLength(_resizeData.Definition2!); double definition2Min = _resizeData.Definition2!.UserMinSizeValueCache; double definition2Max = _resizeData.Definition2.UserMaxSizeValueCache; @@ -590,7 +590,7 @@ namespace Avalonia.Controls } else if (IsStar(definition)) { - SetDefinitionLength(definition, new GridLength(GetActualLength(definition), GridUnitType.Star)); + SetDefinitionLength(definition, new GridLength(GridSplitter.GetActualLength(definition), GridUnitType.Star)); } } } @@ -629,8 +629,8 @@ namespace Avalonia.Controls if (definition1 != null && definition2 != null) { - double actualLength1 = GetActualLength(definition1); - double actualLength2 = GetActualLength(definition2); + double actualLength1 = GridSplitter.GetActualLength(definition1); + double actualLength2 = GridSplitter.GetActualLength(definition2); double pixelLength = 1 / _resizeData.Scaling; double epsilon = pixelLength + LayoutHelper.LayoutEpsilon; diff --git a/src/Avalonia.Controls/Platform/InProcessDragSource.cs b/src/Avalonia.Controls/Platform/InProcessDragSource.cs index 209d5f03dc..e107d2c217 100644 --- a/src/Avalonia.Controls/Platform/InProcessDragSource.cs +++ b/src/Avalonia.Controls/Platform/InProcessDragSource.cs @@ -64,12 +64,12 @@ namespace Avalonia.Platform var tl = root.GetSelfAndVisualAncestors().OfType().FirstOrDefault(); tl?.PlatformImpl?.Input?.Invoke(rawEvent); - var effect = GetPreferredEffect(rawEvent.Effects & _allowedEffects, modifiers); + var effect = InProcessDragSource.GetPreferredEffect(rawEvent.Effects & _allowedEffects, modifiers); UpdateCursor(root, effect); return effect; } - private DragDropEffects GetPreferredEffect(DragDropEffects effect, RawInputModifiers modifiers) + private static DragDropEffects GetPreferredEffect(DragDropEffects effect, RawInputModifiers modifiers) { if (effect == DragDropEffects.Copy || effect == DragDropEffects.Move || effect == DragDropEffects.Link || effect == DragDropEffects.None) return effect; // No need to check for the modifiers. diff --git a/src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs b/src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs index c526b7ac49..e5bf924120 100644 --- a/src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs +++ b/src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs @@ -295,7 +295,7 @@ namespace Avalonia.Controls.Presenters // arrange then that change wasn't just due to scrolling (as scrolling doesn't adjust // relative positions within Child). if (_anchorElement != null && - TranslateBounds(_anchorElement, Child!, out var updatedBounds) && + ScrollContentPresenter.TranslateBounds(_anchorElement, Child!, out var updatedBounds) && updatedBounds.Position != _anchorElementBounds.Position) { var offset = updatedBounds.Position - _anchorElementBounds.Position; @@ -588,7 +588,7 @@ namespace Avalonia.Controls.Presenters private bool GetViewportBounds(IControl element, out Rect bounds) { - if (TranslateBounds(element, Child!, out var childBounds)) + if (ScrollContentPresenter.TranslateBounds(element, Child!, out var childBounds)) { // We want the bounds relative to the new Offset, regardless of whether the child // control has actually been arranged to this offset yet, so translate first to the @@ -605,7 +605,7 @@ namespace Avalonia.Controls.Presenters private Rect TranslateBounds(IControl control, IControl to) { - if (TranslateBounds(control, to, out var bounds)) + if (ScrollContentPresenter.TranslateBounds(control, to, out var bounds)) { return bounds; } @@ -613,7 +613,7 @@ namespace Avalonia.Controls.Presenters throw new InvalidOperationException("The control's bounds could not be translated to the requested control."); } - private bool TranslateBounds(IControl control, IControl to, out Rect bounds) + private static bool TranslateBounds(IControl control, IControl to, out Rect bounds) { if (!control.IsVisible) { diff --git a/src/Avalonia.Controls/Primitives/AdornerLayer.cs b/src/Avalonia.Controls/Primitives/AdornerLayer.cs index d557424fbb..12a17b8c9f 100644 --- a/src/Avalonia.Controls/Primitives/AdornerLayer.cs +++ b/src/Avalonia.Controls/Primitives/AdornerLayer.cs @@ -211,7 +211,7 @@ namespace Avalonia.Controls.Primitives { child.RenderTransform = new MatrixTransform(info.Bounds.Value.Transform); child.RenderTransformOrigin = new RelativePoint(new Point(0, 0), RelativeUnit.Absolute); - UpdateClip(child, info.Bounds.Value, isClipEnabled); + AdornerLayer.UpdateClip(child, info.Bounds.Value, isClipEnabled); child.Arrange(info.Bounds.Value.Bounds); } else @@ -232,7 +232,7 @@ namespace Avalonia.Controls.Primitives layer?.UpdateAdornedElement(adorner, adorned); } - private void UpdateClip(IControl control, TransformedBounds bounds, bool isEnabled) + private static void UpdateClip(IControl control, TransformedBounds bounds, bool isEnabled) { if (!isEnabled) { diff --git a/src/Avalonia.Controls/Primitives/Popup.cs b/src/Avalonia.Controls/Primitives/Popup.cs index ccb81ba276..581a65f6b9 100644 --- a/src/Avalonia.Controls/Primitives/Popup.cs +++ b/src/Avalonia.Controls/Primitives/Popup.cs @@ -475,7 +475,7 @@ namespace Avalonia.Controls.Primitives _openState = new PopupOpenState(placementTarget, topLevel, popupHost, cleanupPopup); - WindowManagerAddShadowHintChanged(popupHost, WindowManagerAddShadowHint); + Popup.WindowManagerAddShadowHintChanged(popupHost, WindowManagerAddShadowHint); popupHost.Show(); @@ -639,7 +639,7 @@ namespace Avalonia.Controls.Primitives return Disposable.Create((unsubscribe, target, handler), state => state.unsubscribe(state.target, state.handler)); } - private void WindowManagerAddShadowHintChanged(IPopupHost host, bool hint) + private static void WindowManagerAddShadowHintChanged(IPopupHost host, bool hint) { if(host is PopupRoot pr && pr.PlatformImpl is not null) { diff --git a/src/Avalonia.Controls/Repeater/RecyclePool.cs b/src/Avalonia.Controls/Repeater/RecyclePool.cs index cf2b40836e..9d6ad37721 100644 --- a/src/Avalonia.Controls/Repeater/RecyclePool.cs +++ b/src/Avalonia.Controls/Repeater/RecyclePool.cs @@ -32,7 +32,7 @@ namespace Avalonia.Controls public void PutElement(IControl element, string key, IControl? owner) { - var ownerAsPanel = EnsureOwnerIsPanelOrNull(owner); + var ownerAsPanel = RecyclePool.EnsureOwnerIsPanelOrNull(owner); var elementInfo = new ElementInfo(element, ownerAsPanel); if (!_elements.TryGetValue(key, out var pool)) @@ -56,7 +56,7 @@ namespace Avalonia.Controls var elementInfo = elements.FirstOrDefault(x => x.Owner == owner) ?? elements.LastOrDefault(); elements.Remove(elementInfo!); - var ownerAsPanel = EnsureOwnerIsPanelOrNull(owner); + var ownerAsPanel = RecyclePool.EnsureOwnerIsPanelOrNull(owner); if (elementInfo!.Owner != null && elementInfo.Owner != ownerAsPanel) { // Element is still under its parent. remove it from its parent. @@ -80,10 +80,10 @@ namespace Avalonia.Controls return null; } - internal string GetReuseKey(IControl element) => ((Control)element).GetValue(ReuseKeyProperty); - internal void SetReuseKey(IControl element, string value) => ((Control)element).SetValue(ReuseKeyProperty, value); + internal static string GetReuseKey(IControl element) => ((Control)element).GetValue(ReuseKeyProperty); + internal static void SetReuseKey(IControl element, string value) => ((Control)element).SetValue(ReuseKeyProperty, value); - private IPanel? EnsureOwnerIsPanelOrNull(IControl? owner) + private static IPanel? EnsureOwnerIsPanelOrNull(IControl? owner) { if (owner is IPanel panel) { diff --git a/src/Avalonia.Controls/Repeater/RecyclingElementFactory.cs b/src/Avalonia.Controls/Repeater/RecyclingElementFactory.cs index c1baa66433..1258c58324 100644 --- a/src/Avalonia.Controls/Repeater/RecyclingElementFactory.cs +++ b/src/Avalonia.Controls/Repeater/RecyclingElementFactory.cs @@ -72,7 +72,7 @@ namespace Avalonia.Controls element = dataTemplate.Build(args.Data)!; // Associate ReuseKey with element - RecyclePool.SetReuseKey(element, templateKey); + Avalonia.Controls.RecyclePool.SetReuseKey(element, templateKey); } return element; @@ -81,7 +81,7 @@ namespace Avalonia.Controls protected override void RecycleElementCore(ElementFactoryRecycleArgs args) { var element = args.Element!; - var key = RecyclePool.GetReuseKey(element); + var key = Avalonia.Controls.RecyclePool.GetReuseKey(element); RecyclePool.PutElement(element, key, args.Parent); } diff --git a/src/Avalonia.Controls/SplitView.cs b/src/Avalonia.Controls/SplitView.cs index c344dd795d..2d735a2cbb 100644 --- a/src/Avalonia.Controls/SplitView.cs +++ b/src/Avalonia.Controls/SplitView.cs @@ -431,7 +431,7 @@ namespace Avalonia.Controls } } - private string GetPseudoClass(SplitViewDisplayMode mode) + private static string GetPseudoClass(SplitViewDisplayMode mode) { return mode switch { @@ -463,8 +463,8 @@ namespace Avalonia.Controls private void OnDisplayModeChanged(AvaloniaPropertyChangedEventArgs e) { - var oldState = GetPseudoClass(e.GetOldValue()); - var newState = GetPseudoClass(e.GetNewValue()); + var oldState = SplitView.GetPseudoClass(e.GetOldValue()); + var newState = SplitView.GetPseudoClass(e.GetNewValue()); PseudoClasses.Remove($":{oldState}"); PseudoClasses.Add($":{newState}"); diff --git a/src/Avalonia.Controls/TextBox.cs b/src/Avalonia.Controls/TextBox.cs index da4e90fb66..0ac57c9233 100644 --- a/src/Avalonia.Controls/TextBox.cs +++ b/src/Avalonia.Controls/TextBox.cs @@ -397,9 +397,9 @@ namespace Avalonia.Controls var selectionStart = SelectionStart; var selectionEnd = SelectionEnd; - CaretIndex = CoerceCaretIndex(caretIndex, value); - SelectionStart = CoerceCaretIndex(selectionStart, value); - SelectionEnd = CoerceCaretIndex(selectionEnd, value); + CaretIndex = TextBox.CoerceCaretIndex(caretIndex, value); + SelectionStart = TextBox.CoerceCaretIndex(selectionStart, value); + SelectionEnd = TextBox.CoerceCaretIndex(selectionEnd, value); var textChanged = SetAndRaise(TextProperty, ref _text, value); @@ -1380,9 +1380,9 @@ namespace Avalonia.Controls } } - private int CoerceCaretIndex(int value) => CoerceCaretIndex(value, Text); + private int CoerceCaretIndex(int value) => TextBox.CoerceCaretIndex(value, Text); - private int CoerceCaretIndex(int value, string? text) + private static int CoerceCaretIndex(int value, string? text) { if (text == null) { diff --git a/src/Avalonia.Controls/TopLevel.cs b/src/Avalonia.Controls/TopLevel.cs index 47fc9d7988..9fad9824df 100644 --- a/src/Avalonia.Controls/TopLevel.cs +++ b/src/Avalonia.Controls/TopLevel.cs @@ -429,7 +429,7 @@ namespace Avalonia.Controls LayoutHelper.InvalidateSelfAndChildrenMeasure(this); } - private bool TransparencyLevelsMatch (WindowTransparencyLevel requested, WindowTransparencyLevel received) + private static bool TransparencyLevelsMatch (WindowTransparencyLevel requested, WindowTransparencyLevel received) { if(requested == received) { @@ -449,7 +449,7 @@ namespace Avalonia.Controls { if(transparencyLevel == WindowTransparencyLevel.None || TransparencyLevelHint == WindowTransparencyLevel.None || - !TransparencyLevelsMatch(TransparencyLevelHint, transparencyLevel)) + !TopLevel.TransparencyLevelsMatch(TransparencyLevelHint, transparencyLevel)) { _transparencyFallbackBorder.Background = TransparencyBackgroundFallback; } diff --git a/src/Avalonia.Controls/TreeView.cs b/src/Avalonia.Controls/TreeView.cs index d78f9c82ef..be30792cc8 100644 --- a/src/Avalonia.Controls/TreeView.cs +++ b/src/Avalonia.Controls/TreeView.cs @@ -284,7 +284,7 @@ namespace Avalonia.Controls foreach (IControl container in ItemContainerGenerator.Index!.Containers) { - MarkContainerSelected(container, false); + TreeView.MarkContainerSelected(container, false); } if (SelectedItems.Count > 0) @@ -339,7 +339,7 @@ namespace Avalonia.Controls { var container = ItemContainerGenerator.Index!.ContainerFromItem(item)!; - MarkContainerSelected(container, selected); + TreeView.MarkContainerSelected(container, selected); } private void SelectedItemsAdded(IList items) @@ -826,7 +826,7 @@ namespace Avalonia.Controls /// /// The container. /// Whether the control is selected - private void MarkContainerSelected(IControl container, bool selected) + private static void MarkContainerSelected(IControl container, bool selected) { if (container == null) { diff --git a/src/Avalonia.Controls/UserControl.cs b/src/Avalonia.Controls/UserControl.cs index 7b9cc2da1c..e9339d5f4b 100644 --- a/src/Avalonia.Controls/UserControl.cs +++ b/src/Avalonia.Controls/UserControl.cs @@ -1,4 +1,3 @@ -using System; using Avalonia.Styling; namespace Avalonia.Controls From 4620e5cf99ff0a82832d117b23ca97ffb66c764d Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Fri, 14 Oct 2022 17:09:16 +0200 Subject: [PATCH 06/38] feat(ColorPicker): Address rule CA1822 --- .../ColorPalettes/MaterialColorPalette.cs | 8 ++++---- .../ColorSlider/ColorSlider.cs | 6 +++--- .../ColorSpectrum/ColorSpectrum.cs | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Avalonia.Controls.ColorPicker/ColorPalettes/MaterialColorPalette.cs b/src/Avalonia.Controls.ColorPicker/ColorPalettes/MaterialColorPalette.cs index 5cf5662ede..555965a9a7 100644 --- a/src/Avalonia.Controls.ColorPicker/ColorPalettes/MaterialColorPalette.cs +++ b/src/Avalonia.Controls.ColorPicker/ColorPalettes/MaterialColorPalette.cs @@ -35,7 +35,7 @@ namespace Avalonia.Controls /// This is pulled out separately to lazy load for performance. /// If no material color palette is ever used, no colors will be created. /// - private void InitColorChart() + private static void InitColorChart() { lock (_colorChartMutex) { @@ -322,7 +322,7 @@ namespace Avalonia.Controls { if (_colorChart == null) { - InitColorChart(); + MaterialColorPalette.InitColorChart(); } return _colorChartColorCount; @@ -336,7 +336,7 @@ namespace Avalonia.Controls { if (_colorChart == null) { - InitColorChart(); + MaterialColorPalette.InitColorChart(); } return _colorChartShadeCount; @@ -348,7 +348,7 @@ namespace Avalonia.Controls { if (_colorChart == null) { - InitColorChart(); + MaterialColorPalette.InitColorChart(); } return _colorChart![ diff --git a/src/Avalonia.Controls.ColorPicker/ColorSlider/ColorSlider.cs b/src/Avalonia.Controls.ColorPicker/ColorSlider/ColorSlider.cs index b662d20223..fab2b35969 100644 --- a/src/Avalonia.Controls.ColorPicker/ColorSlider/ColorSlider.cs +++ b/src/Avalonia.Controls.ColorPicker/ColorSlider/ColorSlider.cs @@ -121,7 +121,7 @@ namespace Avalonia.Controls.Primitives /// /// The to round component values for. /// A new with rounded component values. - private HsvColor RoundComponentValues(HsvColor hsvColor) + private static HsvColor RoundComponentValues(HsvColor hsvColor) { return new HsvColor( Math.Round(hsvColor.A, 2, MidpointRounding.AwayFromZero), @@ -147,7 +147,7 @@ namespace Avalonia.Controls.Primitives if (IsRoundingEnabled) { - hsvColor = RoundComponentValues(hsvColor); + hsvColor = ColorSlider.RoundComponentValues(hsvColor); } // Note: Components converted into a usable range for the user @@ -272,7 +272,7 @@ namespace Avalonia.Controls.Primitives if (IsRoundingEnabled) { - hsvColor = RoundComponentValues(hsvColor); + hsvColor = ColorSlider.RoundComponentValues(hsvColor); } return (rgbColor, hsvColor); diff --git a/src/Avalonia.Controls.ColorPicker/ColorSpectrum/ColorSpectrum.cs b/src/Avalonia.Controls.ColorPicker/ColorSpectrum/ColorSpectrum.cs index bd44161a42..1ff1445d8e 100644 --- a/src/Avalonia.Controls.ColorPicker/ColorSpectrum/ColorSpectrum.cs +++ b/src/Avalonia.Controls.ColorPicker/ColorSpectrum/ColorSpectrum.cs @@ -1027,7 +1027,7 @@ namespace Avalonia.Controls.Primitives { for (int y = pixelDimension - 1; y >= 0; --y) { - FillPixelForBox( + ColorSpectrum.FillPixelForBox( x, y, hsv, pixelDimension, components, minHue, maxHue, minSaturation, maxSaturation, minValue, maxValue, bgraMinPixelData, bgraMiddle1PixelData, bgraMiddle2PixelData, bgraMiddle3PixelData, bgraMiddle4PixelData, bgraMaxPixelData, newHsvValues); @@ -1099,7 +1099,7 @@ namespace Avalonia.Controls.Primitives }); } - private void FillPixelForBox( + private static void FillPixelForBox( double x, double y, Hsv baseHsv, From b8b180f64c781d782e7f9a044210a5a0a2192fd9 Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Fri, 14 Oct 2022 17:09:38 +0200 Subject: [PATCH 07/38] feat(DataGrid): Address rule CA1822 --- src/Avalonia.Controls.DataGrid/DataGridTemplateColumn.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Avalonia.Controls.DataGrid/DataGridTemplateColumn.cs b/src/Avalonia.Controls.DataGrid/DataGridTemplateColumn.cs index 0e754d5815..023ae99266 100644 --- a/src/Avalonia.Controls.DataGrid/DataGridTemplateColumn.cs +++ b/src/Avalonia.Controls.DataGrid/DataGridTemplateColumn.cs @@ -56,7 +56,7 @@ namespace Avalonia.Controls set => SetAndRaise(CellEditingTemplateProperty, ref _cellEditingCellTemplate, value); } - private void OnCellTemplateChanged(AvaloniaPropertyChangedEventArgs e) + private static void OnCellTemplateChanged(AvaloniaPropertyChangedEventArgs e) { var oldValue = (IDataTemplate)e.OldValue; var value = (IDataTemplate)e.NewValue; From bf1f6f04399b2b4290e025d714741a435ea04b25 Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Fri, 14 Oct 2022 17:09:57 +0200 Subject: [PATCH 08/38] feat(Diagnostic): Address rule CA1822 --- .../Diagnostics/Screenshots/FilePickerHandler.cs | 4 ++-- .../Diagnostics/ViewModels/ControlDetailsViewModel.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Avalonia.Diagnostics/Diagnostics/Screenshots/FilePickerHandler.cs b/src/Avalonia.Diagnostics/Diagnostics/Screenshots/FilePickerHandler.cs index 4153d2d38c..325c55783c 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/Screenshots/FilePickerHandler.cs +++ b/src/Avalonia.Diagnostics/Diagnostics/Screenshots/FilePickerHandler.cs @@ -47,7 +47,7 @@ namespace Avalonia.Diagnostics.Screenshots /// public string Title { get; } = "Save Screenshot to ..."; - Window GetWindow(IControl control) + static Window GetWindow(IControl control) { var window = control.VisualRoot as Window; var app = Application.Current; @@ -61,7 +61,7 @@ namespace Avalonia.Diagnostics.Screenshots protected async override Task GetStream(IControl control) { Stream? output = default; - var result = await GetWindow(control).StorageProvider.SaveFilePickerAsync(new FilePickerSaveOptions + var result = await FilePickerHandler.GetWindow(control).StorageProvider.SaveFilePickerAsync(new FilePickerSaveOptions { SuggestedStartLocation = new BclStorageFolder(new DirectoryInfo(ScreenshotsRoot)), Title = Title, diff --git a/src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs b/src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs index 631da80d8b..869b2fd600 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs +++ b/src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs @@ -83,7 +83,7 @@ namespace Avalonia.Diagnostics.ViewModels { var setterValue = regularSetter.Value; - var resourceInfo = GetResourceInfo(setterValue); + var resourceInfo = ControlDetailsViewModel.GetResourceInfo(setterValue); SetterViewModel setterVm; @@ -122,7 +122,7 @@ namespace Avalonia.Diagnostics.ViewModels public bool CanNavigateToParentProperty => _selectedEntitiesStack.Count >= 1; - private (object resourceKey, bool isDynamic)? GetResourceInfo(object? value) + private static (object resourceKey, bool isDynamic)? GetResourceInfo(object? value) { if (value is StaticResourceExtension staticResource) { From e014c941447f4f2a2243a697cf62b4fa1e248202 Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Fri, 14 Oct 2022 17:10:13 +0200 Subject: [PATCH 09/38] feat(Dialogs): Address rule CA1822 --- src/Avalonia.Dialogs/ManagedStorageProvider.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Avalonia.Dialogs/ManagedStorageProvider.cs b/src/Avalonia.Dialogs/ManagedStorageProvider.cs index 37d2781692..06c2c29dab 100644 --- a/src/Avalonia.Dialogs/ManagedStorageProvider.cs +++ b/src/Avalonia.Dialogs/ManagedStorageProvider.cs @@ -28,7 +28,7 @@ public class ManagedStorageProvider : BclStorageProvider where T : Window, ne public override async Task> OpenFilePickerAsync(FilePickerOpenOptions options) { var model = new ManagedFileChooserViewModel(options, _managedOptions); - var results = await Show(model, _parent); + var results = await ManagedStorageProvider.Show(model, _parent); return results.Select(f => new BclStorageFile(new FileInfo(f))).ToArray(); } @@ -36,7 +36,7 @@ public class ManagedStorageProvider : BclStorageProvider where T : Window, ne public override async Task SaveFilePickerAsync(FilePickerSaveOptions options) { var model = new ManagedFileChooserViewModel(options, _managedOptions); - var results = await Show(model, _parent); + var results = await ManagedStorageProvider.Show(model, _parent); return results.FirstOrDefault() is { } result ? new BclStorageFile(new FileInfo(result)) @@ -46,12 +46,12 @@ public class ManagedStorageProvider : BclStorageProvider where T : Window, ne public override async Task> OpenFolderPickerAsync(FolderPickerOpenOptions options) { var model = new ManagedFileChooserViewModel(options, _managedOptions); - var results = await Show(model, _parent); + var results = await ManagedStorageProvider.Show(model, _parent); return results.Select(f => new BclStorageFolder(new DirectoryInfo(f))).ToArray(); } - private async Task Show(ManagedFileChooserViewModel model, Window parent) + private static async Task Show(ManagedFileChooserViewModel model, Window parent) { var dialog = new T { From aa17cdf1dc5395e0184a2967450ba86e0f2ba7f5 Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Fri, 14 Oct 2022 17:10:42 +0200 Subject: [PATCH 10/38] feat(FreedDesktop): Address rule CA1822 --- src/Avalonia.FreeDesktop/LinuxMountedVolumeInfoListener.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.FreeDesktop/LinuxMountedVolumeInfoListener.cs b/src/Avalonia.FreeDesktop/LinuxMountedVolumeInfoListener.cs index 39ddd9d769..2d6a2569fb 100644 --- a/src/Avalonia.FreeDesktop/LinuxMountedVolumeInfoListener.cs +++ b/src/Avalonia.FreeDesktop/LinuxMountedVolumeInfoListener.cs @@ -34,7 +34,7 @@ namespace Avalonia.FreeDesktop Poll(0); } - private string GetSymlinkTarget(string x) => Path.GetFullPath(Path.Combine(DevByLabelDir, NativeMethods.ReadLink(x))); + private static string GetSymlinkTarget(string x) => Path.GetFullPath(Path.Combine(DevByLabelDir, NativeMethods.ReadLink(x))); private string UnescapeString(string input, string regexText, int escapeBase) => new Regex(regexText).Replace(input, m => Convert.ToChar(Convert.ToByte(m.Groups[1].Value, escapeBase)).ToString()); @@ -61,7 +61,7 @@ namespace Avalonia.FreeDesktop new DirectoryInfo(DevByLabelDir).GetFiles() : Enumerable.Empty(); var labelDevPathPairs = labelDirEnum - .Select(x => (GetSymlinkTarget(x.FullName), UnescapeDeviceLabel(x.Name))); + .Select(x => (LinuxMountedVolumeInfoListener.GetSymlinkTarget(x.FullName), UnescapeDeviceLabel(x.Name))); var q1 = from mount in fProcMounts join device in fProcPartitions on mount.Item1 equals device.Item2 From 3a9404171f4d8c8c4a0598403a9db04d776ba2a1 Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Fri, 14 Oct 2022 17:11:00 +0200 Subject: [PATCH 11/38] feat(Native): Address rule CA1822 --- src/Avalonia.Native/AvaloniaNativeDragSource.cs | 6 +++--- src/Avalonia.Native/AvaloniaNativeMenuExporter.cs | 4 ++-- src/Avalonia.Native/IAvnMenu.cs | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Avalonia.Native/AvaloniaNativeDragSource.cs b/src/Avalonia.Native/AvaloniaNativeDragSource.cs index f91a299b3b..f93d558d25 100644 --- a/src/Avalonia.Native/AvaloniaNativeDragSource.cs +++ b/src/Avalonia.Native/AvaloniaNativeDragSource.cs @@ -19,8 +19,8 @@ namespace Avalonia.Native { _factory = factory; } - - TopLevel FindRoot(IInteractive interactive) + + static TopLevel FindRoot(IInteractive interactive) { while (interactive != null && !(interactive is IVisual)) interactive = interactive.InteractiveParent; @@ -48,7 +48,7 @@ namespace Avalonia.Native public Task DoDragDrop(PointerEventArgs triggerEvent, IDataObject data, DragDropEffects allowedEffects) { // Sanity check - var tl = FindRoot(triggerEvent.Source); + var tl = AvaloniaNativeDragSource.FindRoot(triggerEvent.Source); var view = tl?.PlatformImpl as WindowBaseImpl; if (view == null) throw new ArgumentException(); diff --git a/src/Avalonia.Native/AvaloniaNativeMenuExporter.cs b/src/Avalonia.Native/AvaloniaNativeMenuExporter.cs index d8753efe25..ddabfe8f5d 100644 --- a/src/Avalonia.Native/AvaloniaNativeMenuExporter.cs +++ b/src/Avalonia.Native/AvaloniaNativeMenuExporter.cs @@ -65,7 +65,7 @@ namespace Avalonia.Native } } - private NativeMenu CreateDefaultAppMenu() + private static NativeMenu CreateDefaultAppMenu() { var result = new NativeMenu(); @@ -167,7 +167,7 @@ namespace Avalonia.Native if (appMenu == null) { - appMenu = CreateDefaultAppMenu(); + appMenu = AvaloniaNativeMenuExporter.CreateDefaultAppMenu(); NativeMenu.SetMenu(Application.Current, appMenu); } diff --git a/src/Avalonia.Native/IAvnMenu.cs b/src/Avalonia.Native/IAvnMenu.cs index e413023f6d..f75621865c 100644 --- a/src/Avalonia.Native/IAvnMenu.cs +++ b/src/Avalonia.Native/IAvnMenu.cs @@ -111,7 +111,7 @@ namespace Avalonia.Native.Interop.Impl private __MicroComIAvnMenuItemProxy CreateNewAt(IAvaloniaNativeFactory factory, int index, NativeMenuItemBase item) { - var result = CreateNew(factory, item); + var result = __MicroComIAvnMenuProxy.CreateNew(factory, item); result.Initialize(item); @@ -123,7 +123,7 @@ namespace Avalonia.Native.Interop.Impl return result; } - private __MicroComIAvnMenuItemProxy CreateNew(IAvaloniaNativeFactory factory, NativeMenuItemBase item) + private static __MicroComIAvnMenuItemProxy CreateNew(IAvaloniaNativeFactory factory, NativeMenuItemBase item) { var nativeItem = (__MicroComIAvnMenuItemProxy)(item is NativeMenuItemSeparator ? factory.CreateMenuItemSeparator() : From 713b85522f34cc768a31ecf0fd8f28410d0ec1f6 Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Fri, 14 Oct 2022 17:11:19 +0200 Subject: [PATCH 12/38] feat(OpenGL): Address rule CA1822 --- src/Avalonia.OpenGL/Controls/OpenGlControlBase.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Avalonia.OpenGL/Controls/OpenGlControlBase.cs b/src/Avalonia.OpenGL/Controls/OpenGlControlBase.cs index 279e7e750d..6f87ff19ee 100644 --- a/src/Avalonia.OpenGL/Controls/OpenGlControlBase.cs +++ b/src/Avalonia.OpenGL/Controls/OpenGlControlBase.cs @@ -27,7 +27,7 @@ namespace Avalonia.OpenGL.Controls _context.GlInterface.BindFramebuffer(GL_FRAMEBUFFER, _fb); EnsureTextureAttachment(); EnsureDepthBufferAttachment(_context.GlInterface); - if(!CheckFramebufferStatus(_context.GlInterface)) + if(!OpenGlControlBase.CheckFramebufferStatus(_context.GlInterface)) return; OnOpenGlRender(_context.GlInterface, _fb); @@ -38,7 +38,7 @@ namespace Avalonia.OpenGL.Controls base.Render(context); } - private void CheckError(GlInterface gl) + private static void CheckError(GlInterface gl) { int err; while ((err = gl.GetError()) != GL_NO_ERROR) @@ -186,7 +186,7 @@ namespace Avalonia.OpenGL.Controls EnsureDepthBufferAttachment(gl); EnsureTextureAttachment(); - return CheckFramebufferStatus(gl); + return OpenGlControlBase.CheckFramebufferStatus(gl); } catch(Exception e) { @@ -197,7 +197,7 @@ namespace Avalonia.OpenGL.Controls } } - private bool CheckFramebufferStatus(GlInterface gl) + private static bool CheckFramebufferStatus(GlInterface gl) { var status = gl.CheckFramebufferStatus(GL_FRAMEBUFFER); if (status != GL_FRAMEBUFFER_COMPLETE) From 5196ef2cbc559525051938e5714b8342771d6769 Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Fri, 14 Oct 2022 17:11:37 +0200 Subject: [PATCH 13/38] feat(Reactive): Address rule CA1822 --- .../AvaloniaActivationForViewFetcher.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Avalonia.ReactiveUI/AvaloniaActivationForViewFetcher.cs b/src/Avalonia.ReactiveUI/AvaloniaActivationForViewFetcher.cs index 9f69b4ee6e..94073506e3 100644 --- a/src/Avalonia.ReactiveUI/AvaloniaActivationForViewFetcher.cs +++ b/src/Avalonia.ReactiveUI/AvaloniaActivationForViewFetcher.cs @@ -26,15 +26,15 @@ namespace Avalonia.ReactiveUI public IObservable GetActivationForView(IActivatableView view) { if (!(view is IVisual visual)) return Observable.Return(false); - if (view is Control control) return GetActivationForControl(control); - return GetActivationForVisual(visual); + if (view is Control control) return AvaloniaActivationForViewFetcher.GetActivationForControl(control); + return AvaloniaActivationForViewFetcher.GetActivationForVisual(visual); } /// /// Listens to Loaded and Unloaded /// events for Avalonia Control. /// - private IObservable GetActivationForControl(Control control) + private static IObservable GetActivationForControl(Control control) { var controlLoaded = Observable .FromEventPattern( @@ -55,7 +55,7 @@ namespace Avalonia.ReactiveUI /// Listens to AttachedToVisualTree and DetachedFromVisualTree /// events for Avalonia IVisuals. /// - private IObservable GetActivationForVisual(IVisual visual) + private static IObservable GetActivationForVisual(IVisual visual) { var visualLoaded = Observable .FromEventPattern( From a88ba2a16d1eecebb9177da5f8c41a0533068fa2 Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Fri, 14 Oct 2022 17:11:53 +0200 Subject: [PATCH 14/38] feat(X11): Address rule CA1822 --- src/Avalonia.X11/X11IconLoader.cs | 6 +++--- src/Avalonia.X11/X11Platform.cs | 10 +++++----- src/Avalonia.X11/X11Window.Ime.cs | 2 +- src/Avalonia.X11/X11Window.cs | 6 +++--- src/Avalonia.X11/XI2Manager.cs | 4 ++-- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/Avalonia.X11/X11IconLoader.cs b/src/Avalonia.X11/X11IconLoader.cs index 632a7d39a2..de7c57a556 100644 --- a/src/Avalonia.X11/X11IconLoader.cs +++ b/src/Avalonia.X11/X11IconLoader.cs @@ -9,16 +9,16 @@ namespace Avalonia.X11 { class X11IconLoader : IPlatformIconLoader { - IWindowIconImpl LoadIcon(Bitmap bitmap) + static IWindowIconImpl LoadIcon(Bitmap bitmap) { var rv = new X11IconData(bitmap); bitmap.Dispose(); return rv; } - public IWindowIconImpl LoadIcon(string fileName) => LoadIcon(new Bitmap(fileName)); + public IWindowIconImpl LoadIcon(string fileName) => X11IconLoader.LoadIcon(new Bitmap(fileName)); - public IWindowIconImpl LoadIcon(Stream stream) => LoadIcon(new Bitmap(stream)); + public IWindowIconImpl LoadIcon(Stream stream) => X11IconLoader.LoadIcon(new Bitmap(stream)); public IWindowIconImpl LoadIcon(IBitmapImpl bitmap) { diff --git a/src/Avalonia.X11/X11Platform.cs b/src/Avalonia.X11/X11Platform.cs index 381cdd74c3..312945e713 100644 --- a/src/Avalonia.X11/X11Platform.cs +++ b/src/Avalonia.X11/X11Platform.cs @@ -42,10 +42,10 @@ namespace Avalonia.X11 Options = options; bool useXim = false; - if (EnableIme(options)) + if (AvaloniaX11Platform.EnableIme(options)) { // Attempt to configure DBus-based input method and check if we can fall back to XIM - if (!X11DBusImeHelper.DetectAndRegister() && ShouldUseXim()) + if (!X11DBusImeHelper.DetectAndRegister() && AvaloniaX11Platform.ShouldUseXim()) useXim = true; } @@ -143,7 +143,7 @@ namespace Avalonia.X11 throw new NotSupportedException(); } - bool EnableIme(X11PlatformOptions options) + static bool EnableIme(X11PlatformOptions options) { // Disable if explicitly asked by user var avaloniaImModule = Environment.GetEnvironmentVariable("AVALONIA_IM_MODULE"); @@ -164,8 +164,8 @@ namespace Avalonia.X11 return isCjkLocale; } - - bool ShouldUseXim() + + static bool ShouldUseXim() { // Check if we are forbidden from using IME if (Environment.GetEnvironmentVariable("AVALONIA_IM_MODULE") == "none" diff --git a/src/Avalonia.X11/X11Window.Ime.cs b/src/Avalonia.X11/X11Window.Ime.cs index d68feaca78..128d48957c 100644 --- a/src/Avalonia.X11/X11Window.Ime.cs +++ b/src/Avalonia.X11/X11Window.Ime.cs @@ -107,7 +107,7 @@ namespace Avalonia.X11 var filtered = ScheduleKeyInput(new RawKeyEventArgs(_keyboard, (ulong)ev.KeyEvent.time.ToInt64(), _inputRoot, ev.type == XEventName.KeyPress ? RawKeyEventType.KeyDown : RawKeyEventType.KeyUp, - X11KeyTransform.ConvertKey(key), TranslateModifiers(ev.KeyEvent.state)), ref ev, (int)key, ev.KeyEvent.keycode); + X11KeyTransform.ConvertKey(key), X11Window.TranslateModifiers(ev.KeyEvent.state)), ref ev, (int)key, ev.KeyEvent.keycode); if (ev.type == XEventName.KeyPress && !filtered) TriggerClassicTextInputEvent(ref ev); diff --git a/src/Avalonia.X11/X11Window.cs b/src/Avalonia.X11/X11Window.cs index f24c33cafa..b2120b718e 100644 --- a/src/Avalonia.X11/X11Window.cs +++ b/src/Avalonia.X11/X11Window.cs @@ -463,7 +463,7 @@ namespace Avalonia.X11 : new Vector(-1, 0); ScheduleInput(new RawMouseWheelEventArgs(_mouse, (ulong)ev.ButtonEvent.time.ToInt64(), _inputRoot, new Point(ev.ButtonEvent.x, ev.ButtonEvent.y), delta, - TranslateModifiers(ev.ButtonEvent.state)), ref ev); + X11Window.TranslateModifiers(ev.ButtonEvent.state)), ref ev); } } @@ -683,7 +683,7 @@ namespace Avalonia.X11 } - RawInputModifiers TranslateModifiers(XModifierMask state) + static RawInputModifiers TranslateModifiers(XModifierMask state) { var rv = default(RawInputModifiers); if (state.HasAllFlags(XModifierMask.Button1Mask)) @@ -760,7 +760,7 @@ namespace Avalonia.X11 { var mev = new RawPointerEventArgs( _mouse, (ulong)ev.ButtonEvent.time.ToInt64(), _inputRoot, - type, new Point(ev.ButtonEvent.x, ev.ButtonEvent.y), TranslateModifiers(mods)); + type, new Point(ev.ButtonEvent.x, ev.ButtonEvent.y), X11Window.TranslateModifiers(mods)); ScheduleInput(mev, ref ev); } diff --git a/src/Avalonia.X11/XI2Manager.cs b/src/Avalonia.X11/XI2Manager.cs index 7bf1df41b6..952112b6fd 100644 --- a/src/Avalonia.X11/XI2Manager.cs +++ b/src/Avalonia.X11/XI2Manager.cs @@ -193,11 +193,11 @@ namespace Avalonia.X11 { var rev = (XIEnterLeaveEvent*)xev; if (_clients.TryGetValue(rev->EventWindow, out var client)) - OnEnterLeaveEvent(client, ref *rev); + XI2Manager.OnEnterLeaveEvent(client, ref *rev); } } - void OnEnterLeaveEvent(IXI2Client client, ref XIEnterLeaveEvent ev) + static void OnEnterLeaveEvent(IXI2Client client, ref XIEnterLeaveEvent ev) { if (ev.evtype == XiEventType.XI_Leave) { From 93f0fcf007c1e51556f25fd292a97b4375c9a3fd Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Fri, 14 Oct 2022 17:12:14 +0200 Subject: [PATCH 15/38] feat(iOS): Address rule CA1822 --- src/iOS/Avalonia.iOS/CombinedSpan3.cs | 2 +- src/iOS/Avalonia.iOS/TouchHandler.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/iOS/Avalonia.iOS/CombinedSpan3.cs b/src/iOS/Avalonia.iOS/CombinedSpan3.cs index e9f44b7d58..13faea1848 100644 --- a/src/iOS/Avalonia.iOS/CombinedSpan3.cs +++ b/src/iOS/Avalonia.iOS/CombinedSpan3.cs @@ -16,7 +16,7 @@ internal ref struct CombinedSpan3 public int Length => Span1.Length + Span2.Length + Span3.Length; - void CopyFromSpan(ReadOnlySpan from, int offset, ref Span to) + static void CopyFromSpan(ReadOnlySpan from, int offset, ref Span to) { if(to.Length == 0) return; diff --git a/src/iOS/Avalonia.iOS/TouchHandler.cs b/src/iOS/Avalonia.iOS/TouchHandler.cs index 959a660d8a..44bf08365f 100644 --- a/src/iOS/Avalonia.iOS/TouchHandler.cs +++ b/src/iOS/Avalonia.iOS/TouchHandler.cs @@ -19,7 +19,7 @@ namespace Avalonia.iOS _tl = tl; } - ulong Ts(UIEvent evt) => (ulong) (evt.Timestamp * 1000); + static ulong Ts(UIEvent evt) => (ulong) (evt.Timestamp * 1000); private IInputRoot Root => _view.InputRoot; private static long _nextTouchPointId = 1; private Dictionary _knownTouches = new Dictionary(); From 4800f7a01b666d962e2f5103ff39dce0e98fea18 Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Fri, 14 Oct 2022 17:14:27 +0200 Subject: [PATCH 16/38] feat(Markup): Address rule CA1822 --- .../CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs | 6 ++---- .../Converters/AvaloniaPropertyTypeConverter.cs | 8 ++++---- .../Avalonia.Markup.Xaml/Converters/IconTypeConverter.cs | 4 ++-- .../MarkupExtensions/DynamicResourceExtension.cs | 6 +++--- src/Markup/Avalonia.Markup.Xaml/Parsers/PropertyParser.cs | 2 +- .../Markup/Parsers/Nodes/StringIndexerNode.cs | 6 +++--- 6 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs index 6c9d510ba0..12406df765 100644 --- a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs +++ b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs @@ -67,10 +67,8 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions string propertyName, IXamlAstTypeReference selectorTypeReference, IXamlLineInfo lineInfo) { XamlAstNamePropertyReference forgedReference; - - var parser = new PropertyParser(); - - var parsedPropertyName = parser.Parse(new CharacterReader(propertyName.AsSpan())); + + var parsedPropertyName = PropertyParser.Parse(new CharacterReader(propertyName.AsSpan())); if(parsedPropertyName.owner == null) forgedReference = new XamlAstNamePropertyReference(lineInfo, selectorTypeReference, propertyName, selectorTypeReference); diff --git a/src/Markup/Avalonia.Markup.Xaml/Converters/AvaloniaPropertyTypeConverter.cs b/src/Markup/Avalonia.Markup.Xaml/Converters/AvaloniaPropertyTypeConverter.cs index 45ca1c4adc..dff315c727 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Converters/AvaloniaPropertyTypeConverter.cs +++ b/src/Markup/Avalonia.Markup.Xaml/Converters/AvaloniaPropertyTypeConverter.cs @@ -22,8 +22,8 @@ namespace Avalonia.Markup.Xaml.Converters { var registry = AvaloniaPropertyRegistry.Instance; var parser = new PropertyParser(); - var (ns, owner, propertyName) = parser.Parse(new CharacterReader(((string)value).AsSpan())); - var ownerType = TryResolveOwnerByName(context, ns, owner); + var (ns, owner, propertyName) = PropertyParser.Parse(new CharacterReader(((string)value).AsSpan())); + var ownerType = AvaloniaPropertyTypeConverter.TryResolveOwnerByName(context, ns, owner); var targetType = context.GetFirstParent()?.TargetType ?? context.GetFirstParent"; - using (StartWithResources(("test:style.xaml", styleXaml))) + using (StyleIncludeTests.StartWithResources(("test:style.xaml", styleXaml))) { var xaml = @" new Styles { - WindowStyle(), + ResourceDictionaryTests.WindowStyle(), }); return UnitTestApplication.Start(services); } - private Style WindowStyle() + private static Style WindowStyle() { return new Style(x => x.OfType()) { diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/XamlIlTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/XamlIlTests.cs index 77a4932ccc..b164f6c371 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/XamlIlTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/XamlIlTests.cs @@ -162,7 +162,7 @@ namespace Avalonia.Markup.Xaml.UnitTests } - void AssertThrows(Action callback, Func check) + static void AssertThrows(Action callback, Func check) { try { @@ -182,7 +182,7 @@ namespace Avalonia.Markup.Xaml.UnitTests public void Bug2570() { SomeStaticProperty = "123"; - AssertThrows(() => AvaloniaRuntimeXamlLoader + XamlIlTests.AssertThrows(() => AvaloniaRuntimeXamlLoader .Load(@" (child); } - private FuncControlTemplate GetTemplate() + private static FuncControlTemplate GetTemplate() { return new FuncControlTemplate((parent, scope) => { diff --git a/tests/Avalonia.RenderTests/Media/GeometryDrawingTests.cs b/tests/Avalonia.RenderTests/Media/GeometryDrawingTests.cs index 06e46c1a06..f6e7ba0c48 100644 --- a/tests/Avalonia.RenderTests/Media/GeometryDrawingTests.cs +++ b/tests/Avalonia.RenderTests/Media/GeometryDrawingTests.cs @@ -17,7 +17,7 @@ namespace Avalonia.Direct2D1.RenderTests.Media { } - private GeometryDrawing CreateGeometryDrawing() + private static GeometryDrawing CreateGeometryDrawing() { GeometryDrawing geometryDrawing = new GeometryDrawing(); EllipseGeometry ellipse = new EllipseGeometry(); diff --git a/tests/Avalonia.RenderTests/Media/TextFormatting/TextLayoutTests.cs b/tests/Avalonia.RenderTests/Media/TextFormatting/TextLayoutTests.cs index b668f4d39e..f921d9fa64 100644 --- a/tests/Avalonia.RenderTests/Media/TextFormatting/TextLayoutTests.cs +++ b/tests/Avalonia.RenderTests/Media/TextFormatting/TextLayoutTests.cs @@ -39,7 +39,7 @@ namespace Avalonia.Direct2D1.RenderTests.Media { } - private TextLayout Create(string text, + private static TextLayout Create(string text, string fontFamily, double fontSize, FontStyle fontStyle, @@ -56,7 +56,7 @@ namespace Avalonia.Direct2D1.RenderTests.Media return formattedText; } - private TextLayout Create(string text, double fontSize) + private static TextLayout Create(string text, double fontSize) { return Create(text, FontName, fontSize, FontStyle.Normal, TextAlignment.Left, @@ -64,7 +64,7 @@ namespace Avalonia.Direct2D1.RenderTests.Media -1); } - private TextLayout Create(string text, double fontSize, TextAlignment alignment, double widthConstraint) + private static TextLayout Create(string text, double fontSize, TextAlignment alignment, double widthConstraint) { return Create(text, FontName, fontSize, FontStyle.Normal, alignment, @@ -72,7 +72,7 @@ namespace Avalonia.Direct2D1.RenderTests.Media widthConstraint); } - private TextLayout Create(string text, double fontSize, TextWrapping wrap, double widthConstraint) + private static TextLayout Create(string text, double fontSize, TextWrapping wrap, double widthConstraint) { return Create(text, FontName, fontSize, FontStyle.Normal, TextAlignment.Left, diff --git a/tests/Avalonia.RenderTests/TestBase.cs b/tests/Avalonia.RenderTests/TestBase.cs index 4d6b313ffc..3f918e2a73 100644 --- a/tests/Avalonia.RenderTests/TestBase.cs +++ b/tests/Avalonia.RenderTests/TestBase.cs @@ -237,7 +237,7 @@ namespace Avalonia.Direct2D1.RenderTests return Math.Sqrt(meanSquaresError); } - private string GetTestsDirectory() + private static string GetTestsDirectory() { var path = Directory.GetCurrentDirectory(); diff --git a/tests/Avalonia.Skia.UnitTests/DrawingContextImplTests.cs b/tests/Avalonia.Skia.UnitTests/DrawingContextImplTests.cs index df0cc2fc1a..68595a2f57 100644 --- a/tests/Avalonia.Skia.UnitTests/DrawingContextImplTests.cs +++ b/tests/Avalonia.Skia.UnitTests/DrawingContextImplTests.cs @@ -21,7 +21,7 @@ namespace Avalonia.Skia.UnitTests target.DrawRectangle(Brushes.Black, new Pen(Brushes.Black, 0), new RoundedRect(new Rect(0, 0, 100, 100), new CornerRadius(4))); } - private DrawingContextImpl CreateTarget() + private static DrawingContextImpl CreateTarget() { var canvas = new SKCanvas(new SKBitmap(100, 100)); return (DrawingContextImpl)DrawingContextHelper.WrapSkiaCanvas(canvas, new Vector(96, 96)); From 9e1ff3e3be9a855220153ba72a0dd991e41de19b Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Mon, 17 Oct 2022 16:38:15 +0200 Subject: [PATCH 21/38] fix: Addreaa review --- .../Animators/GradientBrushAnimator.cs | 6 +++--- src/Avalonia.Base/Animation/KeySpline.cs | 6 +++--- src/Avalonia.Base/Controls/Classes.cs | 18 +++++++++--------- src/Avalonia.Base/Data/Core/ExpressionNode.cs | 2 +- .../Parsers/ExpressionVisitorNodeBuilder.cs | 6 +++--- .../Plugins/DataAnnotationsValidationPlugin.cs | 2 +- .../Data/Core/Plugins/IndeiValidationPlugin.cs | 2 +- .../Data/Core/Plugins/TaskStreamPlugin.cs | 4 ++-- src/Avalonia.Base/Input/DragDropDevice.cs | 12 ++++++------ src/Avalonia.Base/Input/KeyGesture.cs | 2 +- src/Avalonia.Base/Input/KeyboardDevice.cs | 4 ++-- src/Avalonia.Base/Input/MouseDevice.cs | 11 ++++------- src/Avalonia.Base/Input/PenDevice.cs | 2 +- src/Avalonia.Base/Input/Pointer.cs | 4 ++-- src/Avalonia.Base/Input/TouchDevice.cs | 6 +++--- src/Avalonia.Base/Layout/AttachedLayout.cs | 8 ++++---- src/Avalonia.Base/Layout/StackLayout.cs | 8 ++++---- src/Avalonia.Base/Layout/UniformGridLayout.cs | 6 +++--- src/Avalonia.Base/Platform/AssetLoader.cs | 8 ++++---- .../Composition/CompositingRenderer.cs | 4 ++-- .../Rendering/Composition/CompositionTarget.cs | 6 +++--- .../Automation/Peers/ComboBoxAutomationPeer.cs | 6 +++--- .../CalendarBlackoutDatesCollection.cs | 8 ++++---- .../Calendar/SelectedDatesCollection.cs | 9 ++++----- src/Avalonia.Controls/ComboBox.cs | 14 +++++++------- .../DateTimePickers/DateTimePickerPanel.cs | 4 ++-- src/Avalonia.Controls/Grid.cs | 10 +++++----- src/Avalonia.Controls/GridSplitter.cs | 14 +++++++------- .../Platform/InProcessDragSource.cs | 4 ++-- .../Presenters/ScrollContentPresenter.cs | 8 ++++---- .../Primitives/AdornerLayer.cs | 8 ++++---- src/Avalonia.Controls/Primitives/Popup.cs | 6 ++---- src/Avalonia.Controls/Repeater/RecyclePool.cs | 4 ++-- .../Repeater/RecyclingElementFactory.cs | 6 +++--- src/Avalonia.Controls/SplitView.cs | 9 +++------ src/Avalonia.Controls/TextBox.cs | 9 ++++----- src/Avalonia.Controls/TopLevel.cs | 2 +- src/Avalonia.Controls/TreeView.cs | 6 ++---- .../Screenshots/FilePickerHandler.cs | 2 +- .../ViewModels/ControlDetailsViewModel.cs | 16 ++++++++-------- .../LinuxMountedVolumeInfoListener.cs | 8 ++++---- .../AvaloniaNativeDragSource.cs | 2 +- .../AvaloniaNativeMenuExporter.cs | 2 +- src/Avalonia.Native/IAvnMenu.cs | 3 +-- .../Controls/OpenGlControlBase.cs | 4 ++-- .../AvaloniaActivationForViewFetcher.cs | 4 ++-- src/Avalonia.X11/X11IconLoader.cs | 4 ++-- src/Avalonia.X11/X11Platform.cs | 7 +++---- src/Avalonia.X11/X11Window.Ime.cs | 3 +-- src/Avalonia.X11/X11Window.cs | 6 ++---- src/Avalonia.X11/XI2Manager.cs | 2 +- .../XamlIlAvaloniaPropertyHelper.cs | 2 -- .../Converters/IconTypeConverter.cs | 2 +- .../DynamicResourceExtension.cs | 4 ++-- .../Parsers/PropertyParser.cs | 4 +--- .../Markup/Parsers/Nodes/StringIndexerNode.cs | 8 ++++---- src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 4 ++-- src/Windows/Avalonia.Win32/ClipboardImpl.cs | 6 +++--- src/Windows/Avalonia.Win32/CursorFactory.cs | 2 +- src/Windows/Avalonia.Win32/DataObject.cs | 8 ++++---- .../CompositionGenerator/Generator.cs | 2 +- 61 files changed, 169 insertions(+), 190 deletions(-) diff --git a/src/Avalonia.Base/Animation/Animators/GradientBrushAnimator.cs b/src/Avalonia.Base/Animation/Animators/GradientBrushAnimator.cs index f469ea5652..068c190fa1 100644 --- a/src/Avalonia.Base/Animation/Animators/GradientBrushAnimator.cs +++ b/src/Avalonia.Base/Animation/Animators/GradientBrushAnimator.cs @@ -28,7 +28,7 @@ namespace Avalonia.Animation.Animators { case IRadialGradientBrush oldRadial when newValue is IRadialGradientBrush newRadial: return new ImmutableRadialGradientBrush( - GradientBrushAnimator.InterpolateStops(progress, oldValue.GradientStops, newValue.GradientStops), + InterpolateStops(progress, oldValue.GradientStops, newValue.GradientStops), s_doubleAnimator.Interpolate(progress, oldValue.Opacity, newValue.Opacity), oldValue.Transform is { } ? new ImmutableTransform(oldValue.Transform.Value) : null, s_relativePointAnimator.Interpolate(progress, oldValue.TransformOrigin, newValue.TransformOrigin), @@ -39,7 +39,7 @@ namespace Avalonia.Animation.Animators case IConicGradientBrush oldConic when newValue is IConicGradientBrush newConic: return new ImmutableConicGradientBrush( - GradientBrushAnimator.InterpolateStops(progress, oldValue.GradientStops, newValue.GradientStops), + InterpolateStops(progress, oldValue.GradientStops, newValue.GradientStops), s_doubleAnimator.Interpolate(progress, oldValue.Opacity, newValue.Opacity), oldValue.Transform is { } ? new ImmutableTransform(oldValue.Transform.Value) : null, s_relativePointAnimator.Interpolate(progress, oldValue.TransformOrigin, newValue.TransformOrigin), @@ -49,7 +49,7 @@ namespace Avalonia.Animation.Animators case ILinearGradientBrush oldLinear when newValue is ILinearGradientBrush newLinear: return new ImmutableLinearGradientBrush( - GradientBrushAnimator.InterpolateStops(progress, oldValue.GradientStops, newValue.GradientStops), + InterpolateStops(progress, oldValue.GradientStops, newValue.GradientStops), s_doubleAnimator.Interpolate(progress, oldValue.Opacity, newValue.Opacity), oldValue.Transform is { } ? new ImmutableTransform(oldValue.Transform.Value) : null, s_relativePointAnimator.Interpolate(progress, oldValue.TransformOrigin, newValue.TransformOrigin), diff --git a/src/Avalonia.Base/Animation/KeySpline.cs b/src/Avalonia.Base/Animation/KeySpline.cs index b33cd6b881..6ca5b2e759 100644 --- a/src/Avalonia.Base/Animation/KeySpline.cs +++ b/src/Avalonia.Base/Animation/KeySpline.cs @@ -98,7 +98,7 @@ namespace Avalonia.Animation get => _controlPointX1; set { - if (KeySpline.IsValidXValue(value)) + if (IsValidXValue(value)) { _controlPointX1 = value; _isDirty = true; @@ -131,7 +131,7 @@ namespace Avalonia.Animation get => _controlPointX2; set { - if (KeySpline.IsValidXValue(value)) + if (IsValidXValue(value)) { _controlPointX2 = value; _isDirty = true; @@ -188,7 +188,7 @@ namespace Avalonia.Animation /// acceptable range; false otherwise. public bool IsValid() { - return KeySpline.IsValidXValue(_controlPointX1) && KeySpline.IsValidXValue(_controlPointX2); + return IsValidXValue(_controlPointX1) && IsValidXValue(_controlPointX2); } /// diff --git a/src/Avalonia.Base/Controls/Classes.cs b/src/Avalonia.Base/Controls/Classes.cs index 100c2b2a8f..04193cf3d9 100644 --- a/src/Avalonia.Base/Controls/Classes.cs +++ b/src/Avalonia.Base/Controls/Classes.cs @@ -37,7 +37,7 @@ namespace Avalonia.Controls /// The initial items. public Classes(params string[] items) : base(items) - { + { } /// @@ -63,7 +63,7 @@ namespace Avalonia.Controls /// public override void Add(string name) { - Classes.ThrowIfPseudoclass(name, "added"); + ThrowIfPseudoclass(name, "added"); if (!Contains(name)) { @@ -87,7 +87,7 @@ namespace Avalonia.Controls foreach (var name in names) { - Classes.ThrowIfPseudoclass(name, "added"); + ThrowIfPseudoclass(name, "added"); if (!Contains(name)) { @@ -127,7 +127,7 @@ namespace Avalonia.Controls /// public override void Insert(int index, string name) { - Classes.ThrowIfPseudoclass(name, "added"); + ThrowIfPseudoclass(name, "added"); if (!Contains(name)) { @@ -152,7 +152,7 @@ namespace Avalonia.Controls foreach (var name in names) { - Classes.ThrowIfPseudoclass(name, "added"); + ThrowIfPseudoclass(name, "added"); if (!Contains(name)) { @@ -180,7 +180,7 @@ namespace Avalonia.Controls /// public override bool Remove(string name) { - Classes.ThrowIfPseudoclass(name, "removed"); + ThrowIfPseudoclass(name, "removed"); if (base.Remove(name)) { @@ -206,7 +206,7 @@ namespace Avalonia.Controls foreach (var name in names) { - Classes.ThrowIfPseudoclass(name, "removed"); + ThrowIfPseudoclass(name, "removed"); toRemove ??= new List(); @@ -232,7 +232,7 @@ namespace Avalonia.Controls public override void RemoveAt(int index) { var name = this[index]; - Classes.ThrowIfPseudoclass(name, "removed"); + ThrowIfPseudoclass(name, "removed"); base.RemoveAt(index); NotifyChanged(); } @@ -258,7 +258,7 @@ namespace Avalonia.Controls foreach (var name in source) { - Classes.ThrowIfPseudoclass(name, "added"); + ThrowIfPseudoclass(name, "added"); } foreach (var name in this) diff --git a/src/Avalonia.Base/Data/Core/ExpressionNode.cs b/src/Avalonia.Base/Data/Core/ExpressionNode.cs index d1bc60541c..e4b833176c 100644 --- a/src/Avalonia.Base/Data/Core/ExpressionNode.cs +++ b/src/Avalonia.Base/Data/Core/ExpressionNode.cs @@ -138,7 +138,7 @@ namespace Avalonia.Data.Core if (target == null) { - ValueChanged(ExpressionNode.TargetNullNotification()); + ValueChanged(TargetNullNotification()); _listening = false; } else if (target != AvaloniaProperty.UnsetValue) diff --git a/src/Avalonia.Base/Data/Core/Parsers/ExpressionVisitorNodeBuilder.cs b/src/Avalonia.Base/Data/Core/Parsers/ExpressionVisitorNodeBuilder.cs index 9b9ddf2183..42aefb3f54 100644 --- a/src/Avalonia.Base/Data/Core/Parsers/ExpressionVisitorNodeBuilder.cs +++ b/src/Avalonia.Base/Data/Core/Parsers/ExpressionVisitorNodeBuilder.cs @@ -70,7 +70,7 @@ namespace Avalonia.Data.Core.Parsers if (node.Indexer == AvaloniaObjectIndexer) { - var property = ExpressionVisitorNodeBuilder.GetArgumentExpressionValue(node.Arguments[0]); + var property = GetArgumentExpressionValue(node.Arguments[0]); Nodes.Add(new AvaloniaPropertyAccessorNode(property, _enableDataValidation)); } else @@ -162,7 +162,7 @@ namespace Avalonia.Data.Core.Parsers if (node.Method == CreateDelegateMethod) { var visited = Visit(node.Arguments[1]); - Nodes.Add(new PropertyAccessorNode(ExpressionVisitorNodeBuilder.GetArgumentExpressionValue(node.Object!).Name, _enableDataValidation)); + Nodes.Add(new PropertyAccessorNode(GetArgumentExpressionValue(node.Object!).Name, _enableDataValidation)); return node; } else if (node.Method.Name == StreamBindingExtensions.StreamBindingName || node.Method.Name.StartsWith(StreamBindingExtensions.StreamBindingName + '`')) @@ -193,7 +193,7 @@ namespace Avalonia.Data.Core.Parsers throw new ExpressionParseException(0, $"Invalid method call in binding expression: '{node.Method.DeclaringType!.AssemblyQualifiedName}.{node.Method.Name}'."); } - private PropertyInfo? TryGetPropertyFromMethod(MethodInfo method) + private static PropertyInfo? TryGetPropertyFromMethod(MethodInfo method) { var type = method.DeclaringType; return type?.GetRuntimeProperties().FirstOrDefault(prop => prop.GetMethod == method); diff --git a/src/Avalonia.Base/Data/Core/Plugins/DataAnnotationsValidationPlugin.cs b/src/Avalonia.Base/Data/Core/Plugins/DataAnnotationsValidationPlugin.cs index 54d5b5ac28..118b18c020 100644 --- a/src/Avalonia.Base/Data/Core/Plugins/DataAnnotationsValidationPlugin.cs +++ b/src/Avalonia.Base/Data/Core/Plugins/DataAnnotationsValidationPlugin.cs @@ -57,7 +57,7 @@ namespace Avalonia.Data.Core.Plugins else { base.InnerValueChanged(new BindingNotification( - Accessor.CreateException(errors), + CreateException(errors), BindingErrorType.DataValidationError, value)); } diff --git a/src/Avalonia.Base/Data/Core/Plugins/IndeiValidationPlugin.cs b/src/Avalonia.Base/Data/Core/Plugins/IndeiValidationPlugin.cs index e45170ff7e..385d96a7b8 100644 --- a/src/Avalonia.Base/Data/Core/Plugins/IndeiValidationPlugin.cs +++ b/src/Avalonia.Base/Data/Core/Plugins/IndeiValidationPlugin.cs @@ -92,7 +92,7 @@ namespace Avalonia.Data.Core.Plugins if (errors?.Count > 0) { return new BindingNotification( - Validator.GenerateException(errors), + GenerateException(errors), BindingErrorType.DataValidationError, value); } diff --git a/src/Avalonia.Base/Data/Core/Plugins/TaskStreamPlugin.cs b/src/Avalonia.Base/Data/Core/Plugins/TaskStreamPlugin.cs index b25d592597..6703d1f54e 100644 --- a/src/Avalonia.Base/Data/Core/Plugins/TaskStreamPlugin.cs +++ b/src/Avalonia.Base/Data/Core/Plugins/TaskStreamPlugin.cs @@ -44,11 +44,11 @@ namespace Avalonia.Data.Core.Plugins { case TaskStatus.RanToCompletion: case TaskStatus.Faulted: - return TaskStreamPlugin.HandleCompleted(task); + return HandleCompleted(task); default: var subject = new Subject(); task.ContinueWith( - x => TaskStreamPlugin.HandleCompleted(task).Subscribe(subject), + x => HandleCompleted(task).Subscribe(subject), TaskScheduler.FromCurrentSynchronizationContext()) .ConfigureAwait(false); return subject; diff --git a/src/Avalonia.Base/Input/DragDropDevice.cs b/src/Avalonia.Base/Input/DragDropDevice.cs index 16ff428d69..ef4c7f8787 100644 --- a/src/Avalonia.Base/Input/DragDropDevice.cs +++ b/src/Avalonia.Base/Input/DragDropDevice.cs @@ -40,22 +40,22 @@ namespace Avalonia.Input private DragDropEffects DragEnter(IInputRoot inputRoot, Point point, IDataObject data, DragDropEffects effects, KeyModifiers modifiers) { - _lastTarget = DragDropDevice.GetTarget(inputRoot, point); - return DragDropDevice.RaiseDragEvent(_lastTarget, inputRoot, point, DragDrop.DragEnterEvent, effects, data, modifiers); + _lastTarget = GetTarget(inputRoot, point); + return RaiseDragEvent(_lastTarget, inputRoot, point, DragDrop.DragEnterEvent, effects, data, modifiers); } private DragDropEffects DragOver(IInputRoot inputRoot, Point point, IDataObject data, DragDropEffects effects, KeyModifiers modifiers) { - var target = DragDropDevice.GetTarget(inputRoot, point); + var target = GetTarget(inputRoot, point); if (target == _lastTarget) - return DragDropDevice.RaiseDragEvent(target, inputRoot, point, DragDrop.DragOverEvent, effects, data, modifiers); + return RaiseDragEvent(target, inputRoot, point, DragDrop.DragOverEvent, effects, data, modifiers); try { if (_lastTarget != null) _lastTarget.RaiseEvent(new RoutedEventArgs(DragDrop.DragLeaveEvent)); - return DragDropDevice.RaiseDragEvent(target, inputRoot, point, DragDrop.DragEnterEvent, effects, data, modifiers); + return RaiseDragEvent(target, inputRoot, point, DragDrop.DragEnterEvent, effects, data, modifiers); } finally { @@ -81,7 +81,7 @@ namespace Avalonia.Input { try { - return DragDropDevice.RaiseDragEvent(_lastTarget, inputRoot, point, DragDrop.DropEvent, effects, data, modifiers); + return RaiseDragEvent(_lastTarget, inputRoot, point, DragDrop.DropEvent, effects, data, modifiers); } finally { diff --git a/src/Avalonia.Base/Input/KeyGesture.cs b/src/Avalonia.Base/Input/KeyGesture.cs index 7f4f69590a..b08f5d0ba5 100644 --- a/src/Avalonia.Base/Input/KeyGesture.cs +++ b/src/Avalonia.Base/Input/KeyGesture.cs @@ -138,7 +138,7 @@ namespace Avalonia.Input public bool Matches(KeyEventArgs keyEvent) => keyEvent != null && keyEvent.KeyModifiers == KeyModifiers && - KeyGesture.ResolveNumPadOperationKey(keyEvent.Key) == KeyGesture.ResolveNumPadOperationKey(Key); + ResolveNumPadOperationKey(keyEvent.Key) == ResolveNumPadOperationKey(Key); // TODO: Move that to external key parser private static Key ParseKey(string key) diff --git a/src/Avalonia.Base/Input/KeyboardDevice.cs b/src/Avalonia.Base/Input/KeyboardDevice.cs index 0600b54618..68d09ea19a 100644 --- a/src/Avalonia.Base/Input/KeyboardDevice.cs +++ b/src/Avalonia.Base/Input/KeyboardDevice.cs @@ -26,7 +26,7 @@ namespace Avalonia.Input public IInputElement? FocusedElement => _focusedElement; - private void ClearFocusWithinAncestors(IInputElement? element) + private static void ClearFocusWithinAncestors(IInputElement? element) { var el = element; @@ -65,7 +65,7 @@ namespace Avalonia.Input { if (newElement == null && oldElement != null) { - ClearFocusWithinAncestors(oldElement); + KeyboardDevice.ClearFocusWithinAncestors(oldElement); return; } diff --git a/src/Avalonia.Base/Input/MouseDevice.cs b/src/Avalonia.Base/Input/MouseDevice.cs index 6fb34efdb5..a7540b5afa 100644 --- a/src/Avalonia.Base/Input/MouseDevice.cs +++ b/src/Avalonia.Base/Input/MouseDevice.cs @@ -1,12 +1,8 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Reactive.Linq; using Avalonia.Input.Raw; -using Avalonia.Interactivity; using Avalonia.Platform; using Avalonia.Utilities; -using Avalonia.VisualTree; namespace Avalonia.Input { @@ -71,7 +67,7 @@ namespace Avalonia.Input case RawPointerEventType.MiddleButtonDown: case RawPointerEventType.XButton1Down: case RawPointerEventType.XButton2Down: - if (MouseDevice.ButtonCount(props) > 1) + if (ButtonCount(props) > 1) e.Handled = MouseMove(mouse, e.Timestamp, e.Root, e.Position, props, keyModifiers, e.IntermediatePoints, e.InputHitTestResult); else e.Handled = MouseDown(mouse, e.Timestamp, e.Root, e.Position, props, keyModifiers, e.InputHitTestResult); @@ -81,7 +77,7 @@ namespace Avalonia.Input case RawPointerEventType.MiddleButtonUp: case RawPointerEventType.XButton1Up: case RawPointerEventType.XButton2Up: - if (MouseDevice.ButtonCount(props) != 0) + if (ButtonCount(props) != 0) e.Handled = MouseMove(mouse, e.Timestamp, e.Root, e.Position, props, keyModifiers, e.IntermediatePoints, e.InputHitTestResult); else e.Handled = MouseUp(mouse, e.Timestamp, e.Root, e.Position, props, keyModifiers, e.InputHitTestResult); @@ -106,9 +102,10 @@ namespace Avalonia.Input private void LeaveWindow() { + } - PointerPointProperties CreateProperties(RawPointerEventArgs args) + static PointerPointProperties CreateProperties(RawPointerEventArgs args) { return new PointerPointProperties(args.InputModifiers, args.Type.ToUpdateKind()); } diff --git a/src/Avalonia.Base/Input/PenDevice.cs b/src/Avalonia.Base/Input/PenDevice.cs index 876be42be8..b530364fc1 100644 --- a/src/Avalonia.Base/Input/PenDevice.cs +++ b/src/Avalonia.Base/Input/PenDevice.cs @@ -56,7 +56,7 @@ namespace Avalonia.Input e.Handled = PenUp(pointer, e.Timestamp, e.Root, e.Position, props, keyModifiers, e.InputHitTestResult); break; case RawPointerEventType.Move: - e.Handled = PenDevice.PenMove(pointer, e.Timestamp, e.Root, e.Position, props, keyModifiers, e.InputHitTestResult, e.IntermediatePoints); + e.Handled = PenMove(pointer, e.Timestamp, e.Root, e.Position, props, keyModifiers, e.InputHitTestResult, e.IntermediatePoints); break; } diff --git a/src/Avalonia.Base/Input/Pointer.cs b/src/Avalonia.Base/Input/Pointer.cs index be93d9d6b8..7948939d41 100644 --- a/src/Avalonia.Base/Input/Pointer.cs +++ b/src/Avalonia.Base/Input/Pointer.cs @@ -41,7 +41,7 @@ namespace Avalonia.Input PlatformCapture(control); if (oldCapture != null) { - var commonParent = Pointer.FindCommonParent(control, oldCapture); + var commonParent = FindCommonParent(control, oldCapture); foreach (var notifyTarget in oldCapture.GetSelfAndVisualAncestors().OfType()) { if (notifyTarget == commonParent) @@ -54,7 +54,7 @@ namespace Avalonia.Input Captured.DetachedFromVisualTree += OnCaptureDetached; } - IInputElement? GetNextCapture(IVisual parent) + static IInputElement? GetNextCapture(IVisual parent) { return parent as IInputElement ?? parent.FindAncestorOfType(); } diff --git a/src/Avalonia.Base/Input/TouchDevice.cs b/src/Avalonia.Base/Input/TouchDevice.cs index b709b7d0cd..35c7555784 100644 --- a/src/Avalonia.Base/Input/TouchDevice.cs +++ b/src/Avalonia.Base/Input/TouchDevice.cs @@ -73,7 +73,7 @@ namespace Avalonia.Input target.RaiseEvent(new PointerPressedEventArgs(target, pointer, args.Root, args.Position, ev.Timestamp, - new PointerPointProperties(TouchDevice.GetModifiers(args.InputModifiers, true), updateKind), + new PointerPointProperties(GetModifiers(args.InputModifiers, true), updateKind), keyModifier, _clickCount)); } @@ -84,7 +84,7 @@ namespace Avalonia.Input { target.RaiseEvent(new PointerReleasedEventArgs(target, pointer, args.Root, args.Position, ev.Timestamp, - new PointerPointProperties(TouchDevice.GetModifiers(args.InputModifiers, false), updateKind), + new PointerPointProperties(GetModifiers(args.InputModifiers, false), updateKind), keyModifier, MouseButton.Left)); } } @@ -100,7 +100,7 @@ namespace Avalonia.Input { target.RaiseEvent(new PointerEventArgs(InputElement.PointerMovedEvent, target, pointer, args.Root, args.Position, ev.Timestamp, - new PointerPointProperties(TouchDevice.GetModifiers(args.InputModifiers, true), updateKind), + new PointerPointProperties(GetModifiers(args.InputModifiers, true), updateKind), keyModifier, args.IntermediatePoints)); } } diff --git a/src/Avalonia.Base/Layout/AttachedLayout.cs b/src/Avalonia.Base/Layout/AttachedLayout.cs index 594fc04842..ac3a53dabb 100644 --- a/src/Avalonia.Base/Layout/AttachedLayout.cs +++ b/src/Avalonia.Base/Layout/AttachedLayout.cs @@ -67,7 +67,7 @@ namespace Avalonia.Layout { if (this is VirtualizingLayout virtualizingLayout) { - var virtualizingContext = AttachedLayout.GetVirtualizingLayoutContext(context); + var virtualizingContext = GetVirtualizingLayoutContext(context); virtualizingLayout.InitializeForContextCore(virtualizingContext); } else if (this is NonVirtualizingLayout nonVirtualizingLayout) @@ -92,7 +92,7 @@ namespace Avalonia.Layout { if (this is VirtualizingLayout virtualizingLayout) { - var virtualizingContext = AttachedLayout.GetVirtualizingLayoutContext(context); + var virtualizingContext = GetVirtualizingLayoutContext(context); virtualizingLayout.UninitializeForContextCore(virtualizingContext); } else if (this is NonVirtualizingLayout nonVirtualizingLayout) @@ -126,7 +126,7 @@ namespace Avalonia.Layout { if (this is VirtualizingLayout virtualizingLayout) { - var virtualizingContext = AttachedLayout.GetVirtualizingLayoutContext(context); + var virtualizingContext = GetVirtualizingLayoutContext(context); return virtualizingLayout.MeasureOverride(virtualizingContext, availableSize); } else if (this is NonVirtualizingLayout nonVirtualizingLayout) @@ -157,7 +157,7 @@ namespace Avalonia.Layout { if (this is VirtualizingLayout virtualizingLayout) { - var virtualizingContext = AttachedLayout.GetVirtualizingLayoutContext(context); + var virtualizingContext = GetVirtualizingLayoutContext(context); return virtualizingLayout.ArrangeOverride(virtualizingContext, finalSize); } else if (this is NonVirtualizingLayout nonVirtualizingLayout) diff --git a/src/Avalonia.Base/Layout/StackLayout.cs b/src/Avalonia.Base/Layout/StackLayout.cs index 7983b37843..d36667a7f2 100644 --- a/src/Avalonia.Base/Layout/StackLayout.cs +++ b/src/Avalonia.Base/Layout/StackLayout.cs @@ -90,7 +90,7 @@ namespace Avalonia.Layout // Constants int itemsCount = context.ItemCount; var stackState = (StackLayoutState)context.LayoutState!; - double averageElementSize = StackLayout.GetAverageElementSize(availableSize, context, stackState) + Spacing; + double averageElementSize = GetAverageElementSize(availableSize, context, stackState) + Spacing; _orientation.SetMinorSize(ref extent, stackState.MaxArrangeBounds); _orientation.SetMajorSize(ref extent, Math.Max(0.0f, itemsCount * averageElementSize - Spacing)); @@ -178,7 +178,7 @@ namespace Avalonia.Layout { index = targetIndex; var state = (StackLayoutState)context.LayoutState!; - double averageElementSize = StackLayout.GetAverageElementSize(availableSize, context, state) + Spacing; + double averageElementSize = GetAverageElementSize(availableSize, context, state) + Spacing; offset = index * averageElementSize + _orientation.MajorStart(state.FlowAlgorithm.LastExtent); } @@ -237,7 +237,7 @@ namespace Avalonia.Layout var state = (StackLayoutState)context.LayoutState!; var lastExtent = state.FlowAlgorithm.LastExtent; - double averageElementSize = StackLayout.GetAverageElementSize(availableSize, context, state) + Spacing; + double averageElementSize = GetAverageElementSize(availableSize, context, state) + Spacing; double realizationWindowOffsetInExtent = _orientation.MajorStart(realizationRect) - _orientation.MajorStart(lastExtent); double majorSize = _orientation.MajorSize(lastExtent) == 0 ? Math.Max(0.0, averageElementSize * itemsCount - Spacing) : _orientation.MajorSize(lastExtent); if (itemsCount > 0 && @@ -359,6 +359,6 @@ namespace Avalonia.Layout private void InvalidateLayout() => InvalidateMeasure(); - private FlowLayoutAlgorithm GetFlowAlgorithm(VirtualizingLayoutContext context) => ((StackLayoutState)context.LayoutState!).FlowAlgorithm; + private static FlowLayoutAlgorithm GetFlowAlgorithm(VirtualizingLayoutContext context) => ((StackLayoutState)context.LayoutState!).FlowAlgorithm; } } diff --git a/src/Avalonia.Base/Layout/UniformGridLayout.cs b/src/Avalonia.Base/Layout/UniformGridLayout.cs index acb333bcfa..407d115bcd 100644 --- a/src/Avalonia.Base/Layout/UniformGridLayout.cs +++ b/src/Avalonia.Base/Layout/UniformGridLayout.cs @@ -432,7 +432,7 @@ namespace Avalonia.Layout var gridState = (UniformGridLayoutState)context.LayoutState!; gridState.EnsureElementSize(availableSize, context, _minItemWidth, _minItemHeight, _itemsStretch, Orientation, MinRowSpacing, MinColumnSpacing, _maximumRowsOrColumns); - var desiredSize = UniformGridLayout.GetFlowAlgorithm(context).Measure( + var desiredSize = GetFlowAlgorithm(context).Measure( availableSize, context, true, @@ -452,7 +452,7 @@ namespace Avalonia.Layout protected internal override Size ArrangeOverride(VirtualizingLayoutContext context, Size finalSize) { - var value = UniformGridLayout.GetFlowAlgorithm(context).Arrange( + var value = GetFlowAlgorithm(context).Arrange( finalSize, context, true, @@ -463,7 +463,7 @@ namespace Avalonia.Layout protected internal override void OnItemsChangedCore(VirtualizingLayoutContext context, object? source, NotifyCollectionChangedEventArgs args) { - UniformGridLayout.GetFlowAlgorithm(context).OnItemsSourceChanged(source, args, context); + GetFlowAlgorithm(context).OnItemsSourceChanged(source, args, context); // Always invalidate layout to keep the view accurate. InvalidateLayout(); diff --git a/src/Avalonia.Base/Platform/AssetLoader.cs b/src/Avalonia.Base/Platform/AssetLoader.cs index 77ae9f4c32..a08e3b3d4c 100644 --- a/src/Avalonia.Base/Platform/AssetLoader.cs +++ b/src/Avalonia.Base/Platform/AssetLoader.cs @@ -126,7 +126,7 @@ namespace Avalonia.Platform uri = uri.EnsureAbsolute(baseUri); if (uri.IsAvares()) { - var (asm, path) = AssetLoader.GetResAsmAndPath(uri); + var (asm, path) = GetResAsmAndPath(uri); if (asm == null) { throw new ArgumentException( @@ -171,7 +171,7 @@ namespace Avalonia.Platform if (uri.IsAvares()) { - var (asm, path) = AssetLoader.GetResAsmAndPath(uri); + var (asm, path) = GetResAsmAndPath(uri); if (asm.AvaloniaResources == null) return null; asm.AvaloniaResources.TryGetValue(path, out var desc); @@ -187,14 +187,14 @@ namespace Avalonia.Platform return (asm, uri.GetUnescapeAbsolutePath()); } - private IAssemblyDescriptor? GetAssembly(Uri? uri) + private static IAssemblyDescriptor? GetAssembly(Uri? uri) { if (uri != null) { if (!uri.IsAbsoluteUri) return null; if (uri.IsAvares()) - return AssetLoader.GetResAsmAndPath(uri).asm; + return GetResAsmAndPath(uri).asm; if (uri.IsResm()) { diff --git a/src/Avalonia.Base/Rendering/Composition/CompositingRenderer.cs b/src/Avalonia.Base/Rendering/Composition/CompositingRenderer.cs index 3c9a9feac0..3f145c1539 100644 --- a/src/Avalonia.Base/Rendering/Composition/CompositingRenderer.cs +++ b/src/Avalonia.Base/Rendering/Composition/CompositingRenderer.cs @@ -233,11 +233,11 @@ public class CompositingRenderer : IRendererWithCompositor visual.Render(_recordingContext); comp.DrawList = _recorder.EndUpdate(); - CompositingRenderer.SyncChildren(visual); + SyncChildren(visual); } foreach(var v in _recalculateChildren) if (!_dirty.Contains(v)) - CompositingRenderer.SyncChildren(v); + SyncChildren(v); _dirty.Clear(); _recalculateChildren.Clear(); CompositionTarget.Size = _root.ClientSize; diff --git a/src/Avalonia.Base/Rendering/Composition/CompositionTarget.cs b/src/Avalonia.Base/Rendering/Composition/CompositionTarget.cs index 52215e8011..0c24d6cd44 100644 --- a/src/Avalonia.Base/Rendering/Composition/CompositionTarget.cs +++ b/src/Avalonia.Base/Rendering/Composition/CompositionTarget.cs @@ -53,7 +53,7 @@ namespace Avalonia.Rendering.Composition var m = Matrix.Identity; while (v != null) { - if (!CompositionTarget.TryGetInvertedTransform(v, out var cm)) + if (!TryGetInvertedTransform(v, out var cm)) return null; m = m * cm; v = v.Parent; @@ -75,10 +75,10 @@ namespace Avalonia.Rendering.Composition return m33.TryInvert(out matrix); } - bool TryTransformTo(CompositionVisual visual, Point globalPoint, out Point v) + static bool TryTransformTo(CompositionVisual visual, Point globalPoint, out Point v) { v = default; - if (CompositionTarget.TryGetInvertedTransform(visual, out var m)) + if (TryGetInvertedTransform(visual, out var m)) { v = globalPoint * m; return true; diff --git a/src/Avalonia.Controls/Automation/Peers/ComboBoxAutomationPeer.cs b/src/Avalonia.Controls/Automation/Peers/ComboBoxAutomationPeer.cs index d6295fdbd9..5d71e7a8e4 100644 --- a/src/Avalonia.Controls/Automation/Peers/ComboBoxAutomationPeer.cs +++ b/src/Avalonia.Controls/Automation/Peers/ComboBoxAutomationPeer.cs @@ -18,7 +18,7 @@ namespace Avalonia.Automation.Peers public new ComboBox Owner => (ComboBox)base.Owner; - public ExpandCollapseState ExpandCollapseState => ComboBoxAutomationPeer.ToState(Owner.IsDropDownOpen); + public ExpandCollapseState ExpandCollapseState => ToState(Owner.IsDropDownOpen); public bool ShowsMenu => true; public void Collapse() => Owner.IsDropDownOpen = false; public void Expand() => Owner.IsDropDownOpen = true; @@ -66,8 +66,8 @@ namespace Avalonia.Automation.Peers { RaisePropertyChangedEvent( ExpandCollapsePatternIdentifiers.ExpandCollapseStateProperty, - ComboBoxAutomationPeer.ToState((bool)e.OldValue!), - ComboBoxAutomationPeer.ToState((bool)e.NewValue!)); + ToState((bool)e.OldValue!), + ToState((bool)e.NewValue!)); } } diff --git a/src/Avalonia.Controls/Calendar/CalendarBlackoutDatesCollection.cs b/src/Avalonia.Controls/Calendar/CalendarBlackoutDatesCollection.cs index 61463795ee..fe8b616e02 100644 --- a/src/Avalonia.Controls/Calendar/CalendarBlackoutDatesCollection.cs +++ b/src/Avalonia.Controls/Calendar/CalendarBlackoutDatesCollection.cs @@ -122,7 +122,7 @@ namespace Avalonia.Controls.Primitives /// protected override void ClearItems() { - CalendarBlackoutDatesCollection.EnsureValidThread(); + EnsureValidThread(); base.ClearItems(); _owner.UpdateMonths(); @@ -140,7 +140,7 @@ namespace Avalonia.Controls.Primitives /// protected override void InsertItem(int index, CalendarDateRange item) { - CalendarBlackoutDatesCollection.EnsureValidThread(); + EnsureValidThread(); if (!IsValid(item)) { @@ -162,7 +162,7 @@ namespace Avalonia.Controls.Primitives /// protected override void RemoveItem(int index) { - CalendarBlackoutDatesCollection.EnsureValidThread(); + EnsureValidThread(); base.RemoveItem(index); _owner.UpdateMonths(); @@ -182,7 +182,7 @@ namespace Avalonia.Controls.Primitives /// protected override void SetItem(int index, CalendarDateRange item) { - CalendarBlackoutDatesCollection.EnsureValidThread(); + EnsureValidThread(); if (!IsValid(item)) { diff --git a/src/Avalonia.Controls/Calendar/SelectedDatesCollection.cs b/src/Avalonia.Controls/Calendar/SelectedDatesCollection.cs index 8327442fcf..ac4159d536 100644 --- a/src/Avalonia.Controls/Calendar/SelectedDatesCollection.cs +++ b/src/Avalonia.Controls/Calendar/SelectedDatesCollection.cs @@ -6,7 +6,6 @@ using Avalonia.Threading; using System; using System.Collections.ObjectModel; -using System.Threading; namespace Avalonia.Controls.Primitives { @@ -133,7 +132,7 @@ namespace Avalonia.Controls.Primitives /// protected override void ClearItems() { - SelectedDatesCollection.EnsureValidThread(); + EnsureValidThread(); Collection addedItems = new Collection(); Collection removedItems = new Collection(); @@ -170,7 +169,7 @@ namespace Avalonia.Controls.Primitives /// protected override void InsertItem(int index, DateTime item) { - SelectedDatesCollection.EnsureValidThread(); + EnsureValidThread(); if (!Contains(item)) { @@ -233,7 +232,7 @@ namespace Avalonia.Controls.Primitives /// protected override void RemoveItem(int index) { - SelectedDatesCollection.EnsureValidThread(); + EnsureValidThread(); if (index >= Count) { @@ -284,7 +283,7 @@ namespace Avalonia.Controls.Primitives /// protected override void SetItem(int index, DateTime item) { - SelectedDatesCollection.EnsureValidThread(); + EnsureValidThread(); if (!Contains(item)) { diff --git a/src/Avalonia.Controls/ComboBox.cs b/src/Avalonia.Controls/ComboBox.cs index 21918b27a8..1d849ce1e3 100644 --- a/src/Avalonia.Controls/ComboBox.cs +++ b/src/Avalonia.Controls/ComboBox.cs @@ -96,7 +96,7 @@ namespace Avalonia.Controls ItemsPanelProperty.OverrideDefaultValue(DefaultPanel); FocusableProperty.OverrideDefaultValue(true); SelectedItemProperty.Changed.AddClassHandler((x, e) => x.SelectedItemChanged(e)); - KeyDownEvent.AddClassHandler((x, e) => x.OnKeyDown(e), Interactivity.RoutingStrategies.Tunnel); + KeyDownEvent.AddClassHandler((x, e) => x.OnKeyDown(e), RoutingStrategies.Tunnel); IsTextSearchEnabledProperty.OverrideDefaultValue(true); IsDropDownOpenProperty.Changed.AddClassHandler((x, e) => x.DropdownChanged(e)); } @@ -178,8 +178,8 @@ namespace Avalonia.Controls { return new ItemContainerGenerator( this, - ComboBoxItem.ContentProperty, - ComboBoxItem.ContentTemplateProperty); + ContentControl.ContentProperty, + ContentControl.ContentTemplateProperty); } protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e) @@ -236,7 +236,7 @@ namespace Avalonia.Controls else if (IsDropDownOpen && SelectedIndex < 0 && ItemCount > 0 && (e.Key == Key.Up || e.Key == Key.Down) && IsFocused == true) { - var firstChild = Presenter?.Panel?.Children.FirstOrDefault(c => ComboBox.CanFocus(c)); + var firstChild = Presenter?.Panel?.Children.FirstOrDefault(c => CanFocus(c)); if (firstChild != null) { FocusManager.Instance?.Focus(firstChild, NavigationMethod.Directional); @@ -341,7 +341,7 @@ namespace Avalonia.Controls { _subscriptionsOnOpen.Clear(); - if (ComboBox.CanFocus(this)) + if (CanFocus(this)) { Focus(); } @@ -363,7 +363,7 @@ namespace Avalonia.Controls { ev.Handled = true; } - }, Interactivity.RoutingStrategies.Tunnel).DisposeWith(_subscriptionsOnOpen); + }, RoutingStrategies.Tunnel).DisposeWith(_subscriptionsOnOpen); } this.GetObservable(IsVisibleProperty).Subscribe(IsVisibleChanged).DisposeWith(_subscriptionsOnOpen); @@ -403,7 +403,7 @@ namespace Avalonia.Controls container = ItemContainerGenerator.ContainerFromIndex(selectedIndex); } - if (container != null && ComboBox.CanFocus(container)) + if (container != null && CanFocus(container)) { container.Focus(); } diff --git a/src/Avalonia.Controls/DateTimePickers/DateTimePickerPanel.cs b/src/Avalonia.Controls/DateTimePickers/DateTimePickerPanel.cs index eb4a7391b0..faf0b6415a 100644 --- a/src/Avalonia.Controls/DateTimePickers/DateTimePickerPanel.cs +++ b/src/Avalonia.Controls/DateTimePickers/DateTimePickerPanel.cs @@ -455,7 +455,7 @@ namespace Avalonia.Controls.Primitives { Height = ItemHeight, Classes = new Classes($"{PanelType}Item"), - VerticalContentAlignment = Avalonia.Layout.VerticalAlignment.Center, + VerticalContentAlignment = Layout.VerticalAlignment.Center, Focusable = false }); } @@ -546,7 +546,7 @@ namespace Avalonia.Controls.Primitives private void OnItemTapped(object? sender, TappedEventArgs e) { if (e.Source is IVisual source && - DateTimePickerPanel.GetItemFromSource(source) is ListBoxItem listBoxItem && + GetItemFromSource(source) is ListBoxItem listBoxItem && listBoxItem.Tag is int tag) { SelectedValue = tag; diff --git a/src/Avalonia.Controls/Grid.cs b/src/Avalonia.Controls/Grid.cs index 4dc88fec6a..7737fdac2e 100644 --- a/src/Avalonia.Controls/Grid.cs +++ b/src/Avalonia.Controls/Grid.cs @@ -1117,7 +1117,7 @@ namespace Avalonia.Controls else { // otherwise... - cellMeasureWidth = Grid.GetMeasureSizeForRange( + cellMeasureWidth = GetMeasureSizeForRange( DefinitionsU, PrivateCells[cell].ColumnIndex, PrivateCells[cell].ColumnSpan); @@ -1137,7 +1137,7 @@ namespace Avalonia.Controls } else { - cellMeasureHeight = Grid.GetMeasureSizeForRange( + cellMeasureHeight = GetMeasureSizeForRange( DefinitionsV, PrivateCells[cell].RowIndex, PrivateCells[cell].RowSpan); @@ -1192,7 +1192,7 @@ namespace Avalonia.Controls /// Starting index of the range. /// Number of definitions included in the range. /// Length type for given range. - private LayoutTimeSizeType GetLengthTypeForRange( + private static LayoutTimeSizeType GetLengthTypeForRange( IReadOnlyList definitions, int start, int count) @@ -1721,7 +1721,7 @@ namespace Avalonia.Controls /// /// Array of definitions to use for calculations. /// Desired size. - private double CalculateDesiredSize( + private static double CalculateDesiredSize( IReadOnlyList definitions) { double desiredSize = 0; @@ -2281,7 +2281,7 @@ namespace Avalonia.Controls /// Start of the range. /// Number of items in the range. /// Final size. - private double GetFinalSizeForRange( + private static double GetFinalSizeForRange( IReadOnlyList definitions, int start, int count) diff --git a/src/Avalonia.Controls/GridSplitter.cs b/src/Avalonia.Controls/GridSplitter.cs index 1a4736fa92..db8f038177 100644 --- a/src/Avalonia.Controls/GridSplitter.cs +++ b/src/Avalonia.Controls/GridSplitter.cs @@ -288,13 +288,13 @@ namespace Avalonia.Controls _resizeData.Definition1 = GetGridDefinition(_resizeData.Grid, index1, _resizeData.ResizeDirection); _resizeData.OriginalDefinition1Length = _resizeData.Definition1.UserSizeValueCache; // Save Size if user cancels. - _resizeData.OriginalDefinition1ActualLength = GridSplitter.GetActualLength(_resizeData.Definition1); + _resizeData.OriginalDefinition1ActualLength = GetActualLength(_resizeData.Definition1); _resizeData.Definition2Index = index2; _resizeData.Definition2 = GetGridDefinition(_resizeData.Grid, index2, _resizeData.ResizeDirection); _resizeData.OriginalDefinition2Length = _resizeData.Definition2.UserSizeValueCache; // Save Size if user cancels. - _resizeData.OriginalDefinition2ActualLength = GridSplitter.GetActualLength(_resizeData.Definition2); + _resizeData.OriginalDefinition2ActualLength = GetActualLength(_resizeData.Definition2); // Determine how to resize the columns. bool isStar1 = IsStar(_resizeData.Definition1); @@ -537,11 +537,11 @@ namespace Avalonia.Controls /// private void GetDeltaConstraints(out double minDelta, out double maxDelta) { - double definition1Len = GridSplitter.GetActualLength(_resizeData!.Definition1!); + double definition1Len = GetActualLength(_resizeData!.Definition1!); double definition1Min = _resizeData.Definition1!.UserMinSizeValueCache; double definition1Max = _resizeData.Definition1.UserMaxSizeValueCache; - double definition2Len = GridSplitter.GetActualLength(_resizeData.Definition2!); + double definition2Len = GetActualLength(_resizeData.Definition2!); double definition2Min = _resizeData.Definition2!.UserMinSizeValueCache; double definition2Max = _resizeData.Definition2.UserMaxSizeValueCache; @@ -590,7 +590,7 @@ namespace Avalonia.Controls } else if (IsStar(definition)) { - SetDefinitionLength(definition, new GridLength(GridSplitter.GetActualLength(definition), GridUnitType.Star)); + SetDefinitionLength(definition, new GridLength(GetActualLength(definition), GridUnitType.Star)); } } } @@ -629,8 +629,8 @@ namespace Avalonia.Controls if (definition1 != null && definition2 != null) { - double actualLength1 = GridSplitter.GetActualLength(definition1); - double actualLength2 = GridSplitter.GetActualLength(definition2); + double actualLength1 = GetActualLength(definition1); + double actualLength2 = GetActualLength(definition2); double pixelLength = 1 / _resizeData.Scaling; double epsilon = pixelLength + LayoutHelper.LayoutEpsilon; diff --git a/src/Avalonia.Controls/Platform/InProcessDragSource.cs b/src/Avalonia.Controls/Platform/InProcessDragSource.cs index e107d2c217..d0d4bcc8b4 100644 --- a/src/Avalonia.Controls/Platform/InProcessDragSource.cs +++ b/src/Avalonia.Controls/Platform/InProcessDragSource.cs @@ -64,7 +64,7 @@ namespace Avalonia.Platform var tl = root.GetSelfAndVisualAncestors().OfType().FirstOrDefault(); tl?.PlatformImpl?.Input?.Invoke(rawEvent); - var effect = InProcessDragSource.GetPreferredEffect(rawEvent.Effects & _allowedEffects, modifiers); + var effect = GetPreferredEffect(rawEvent.Effects & _allowedEffects, modifiers); UpdateCursor(root, effect); return effect; } @@ -80,7 +80,7 @@ namespace Avalonia.Platform return DragDropEffects.Move; } - private StandardCursorType GetCursorForDropEffect(DragDropEffects effects) + private static StandardCursorType GetCursorForDropEffect(DragDropEffects effects) { if (effects.HasAllFlags(DragDropEffects.Copy)) return StandardCursorType.DragCopy; diff --git a/src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs b/src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs index e5bf924120..2a35fd2a12 100644 --- a/src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs +++ b/src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs @@ -295,7 +295,7 @@ namespace Avalonia.Controls.Presenters // arrange then that change wasn't just due to scrolling (as scrolling doesn't adjust // relative positions within Child). if (_anchorElement != null && - ScrollContentPresenter.TranslateBounds(_anchorElement, Child!, out var updatedBounds) && + TranslateBounds(_anchorElement, Child!, out var updatedBounds) && updatedBounds.Position != _anchorElementBounds.Position) { var offset = updatedBounds.Position - _anchorElementBounds.Position; @@ -588,7 +588,7 @@ namespace Avalonia.Controls.Presenters private bool GetViewportBounds(IControl element, out Rect bounds) { - if (ScrollContentPresenter.TranslateBounds(element, Child!, out var childBounds)) + if (TranslateBounds(element, Child!, out var childBounds)) { // We want the bounds relative to the new Offset, regardless of whether the child // control has actually been arranged to this offset yet, so translate first to the @@ -603,9 +603,9 @@ namespace Avalonia.Controls.Presenters return false; } - private Rect TranslateBounds(IControl control, IControl to) + private static Rect TranslateBounds(IControl control, IControl to) { - if (ScrollContentPresenter.TranslateBounds(control, to, out var bounds)) + if (TranslateBounds(control, to, out var bounds)) { return bounds; } diff --git a/src/Avalonia.Controls/Primitives/AdornerLayer.cs b/src/Avalonia.Controls/Primitives/AdornerLayer.cs index 12a17b8c9f..b681b43ce3 100644 --- a/src/Avalonia.Controls/Primitives/AdornerLayer.cs +++ b/src/Avalonia.Controls/Primitives/AdornerLayer.cs @@ -139,7 +139,7 @@ namespace Avalonia.Controls.Primitives private static void Attach(Visual visual, Control adorner) { - var layer = AdornerLayer.GetAdornerLayer(visual); + var layer = GetAdornerLayer(visual); AddVisualAdorner(visual, adorner, layer); visual.SetValue(s_savedAdornerLayerProperty, layer); } @@ -158,8 +158,8 @@ namespace Avalonia.Controls.Primitives return; } - AdornerLayer.SetAdornedElement(adorner, visual); - AdornerLayer.SetIsClipEnabled(adorner, false); + SetAdornedElement(adorner, visual); + SetIsClipEnabled(adorner, false); ((ISetLogicalParent) adorner).SetParent(visual); layer.Children.Add(adorner); @@ -211,7 +211,7 @@ namespace Avalonia.Controls.Primitives { child.RenderTransform = new MatrixTransform(info.Bounds.Value.Transform); child.RenderTransformOrigin = new RelativePoint(new Point(0, 0), RelativeUnit.Absolute); - AdornerLayer.UpdateClip(child, info.Bounds.Value, isClipEnabled); + UpdateClip(child, info.Bounds.Value, isClipEnabled); child.Arrange(info.Bounds.Value.Bounds); } else diff --git a/src/Avalonia.Controls/Primitives/Popup.cs b/src/Avalonia.Controls/Primitives/Popup.cs index 581a65f6b9..4fc58d5462 100644 --- a/src/Avalonia.Controls/Primitives/Popup.cs +++ b/src/Avalonia.Controls/Primitives/Popup.cs @@ -1,6 +1,5 @@ using System; using System.ComponentModel; -using System.Linq; using System.Reactive.Disposables; using Avalonia.Automation.Peers; using Avalonia.Controls.Mixins; @@ -15,7 +14,6 @@ using Avalonia.Metadata; using Avalonia.Platform; using Avalonia.VisualTree; using Avalonia.Media; -using Avalonia.Utilities; namespace Avalonia.Controls.Primitives { @@ -475,7 +473,7 @@ namespace Avalonia.Controls.Primitives _openState = new PopupOpenState(placementTarget, topLevel, popupHost, cleanupPopup); - Popup.WindowManagerAddShadowHintChanged(popupHost, WindowManagerAddShadowHint); + WindowManagerAddShadowHintChanged(popupHost, WindowManagerAddShadowHint); popupHost.Show(); @@ -769,7 +767,7 @@ namespace Avalonia.Controls.Primitives } } - private void PassThroughEvent(PointerPressedEventArgs e) + private static void PassThroughEvent(PointerPressedEventArgs e) { if (e.Source is LightDismissOverlayLayer layer && layer.GetVisualRoot() is IInputElement root) diff --git a/src/Avalonia.Controls/Repeater/RecyclePool.cs b/src/Avalonia.Controls/Repeater/RecyclePool.cs index 9d6ad37721..0c19a883df 100644 --- a/src/Avalonia.Controls/Repeater/RecyclePool.cs +++ b/src/Avalonia.Controls/Repeater/RecyclePool.cs @@ -32,7 +32,7 @@ namespace Avalonia.Controls public void PutElement(IControl element, string key, IControl? owner) { - var ownerAsPanel = RecyclePool.EnsureOwnerIsPanelOrNull(owner); + var ownerAsPanel = EnsureOwnerIsPanelOrNull(owner); var elementInfo = new ElementInfo(element, ownerAsPanel); if (!_elements.TryGetValue(key, out var pool)) @@ -56,7 +56,7 @@ namespace Avalonia.Controls var elementInfo = elements.FirstOrDefault(x => x.Owner == owner) ?? elements.LastOrDefault(); elements.Remove(elementInfo!); - var ownerAsPanel = RecyclePool.EnsureOwnerIsPanelOrNull(owner); + var ownerAsPanel = EnsureOwnerIsPanelOrNull(owner); if (elementInfo!.Owner != null && elementInfo.Owner != ownerAsPanel) { // Element is still under its parent. remove it from its parent. diff --git a/src/Avalonia.Controls/Repeater/RecyclingElementFactory.cs b/src/Avalonia.Controls/Repeater/RecyclingElementFactory.cs index 1258c58324..7d09155ea4 100644 --- a/src/Avalonia.Controls/Repeater/RecyclingElementFactory.cs +++ b/src/Avalonia.Controls/Repeater/RecyclingElementFactory.cs @@ -72,7 +72,7 @@ namespace Avalonia.Controls element = dataTemplate.Build(args.Data)!; // Associate ReuseKey with element - Avalonia.Controls.RecyclePool.SetReuseKey(element, templateKey); + RecyclePool.SetReuseKey(element, templateKey); } return element; @@ -81,13 +81,13 @@ namespace Avalonia.Controls protected override void RecycleElementCore(ElementFactoryRecycleArgs args) { var element = args.Element!; - var key = Avalonia.Controls.RecyclePool.GetReuseKey(element); + var key = RecyclePool.GetReuseKey(element); RecyclePool.PutElement(element, key, args.Parent); } protected virtual string OnSelectTemplateKeyCore(object? dataContext, IControl? owner) { - if (SelectTemplateKey is object) + if (SelectTemplateKey is not null) { _args ??= new SelectTemplateEventArgs(); _args.TemplateKey = null; diff --git a/src/Avalonia.Controls/SplitView.cs b/src/Avalonia.Controls/SplitView.cs index 2d735a2cbb..d4293446d9 100644 --- a/src/Avalonia.Controls/SplitView.cs +++ b/src/Avalonia.Controls/SplitView.cs @@ -1,14 +1,11 @@ using Avalonia.Controls.Metadata; using Avalonia.Controls.Primitives; using Avalonia.Input; -using Avalonia.Input.Raw; using Avalonia.Interactivity; using Avalonia.Media; using Avalonia.Metadata; -using Avalonia.Platform; using Avalonia.VisualTree; using System; -using System.Reactive.Disposables; using Avalonia.Controls.Presenters; using Avalonia.Controls.Templates; using Avalonia.LogicalTree; @@ -443,7 +440,7 @@ namespace Avalonia.Controls }; } - private string GetPseudoClass(SplitViewPanePlacement placement) + private static string GetPseudoClass(SplitViewPanePlacement placement) { return placement switch { @@ -463,8 +460,8 @@ namespace Avalonia.Controls private void OnDisplayModeChanged(AvaloniaPropertyChangedEventArgs e) { - var oldState = SplitView.GetPseudoClass(e.GetOldValue()); - var newState = SplitView.GetPseudoClass(e.GetNewValue()); + var oldState = GetPseudoClass(e.GetOldValue()); + var newState = GetPseudoClass(e.GetNewValue()); PseudoClasses.Remove($":{oldState}"); PseudoClasses.Add($":{newState}"); diff --git a/src/Avalonia.Controls/TextBox.cs b/src/Avalonia.Controls/TextBox.cs index 0ac57c9233..331c75cd1f 100644 --- a/src/Avalonia.Controls/TextBox.cs +++ b/src/Avalonia.Controls/TextBox.cs @@ -17,7 +17,6 @@ using Avalonia.Controls.Metadata; using Avalonia.Media.TextFormatting; using Avalonia.Media.TextFormatting.Unicode; using Avalonia.Automation.Peers; -using System.Diagnostics; using Avalonia.Threading; namespace Avalonia.Controls @@ -397,9 +396,9 @@ namespace Avalonia.Controls var selectionStart = SelectionStart; var selectionEnd = SelectionEnd; - CaretIndex = TextBox.CoerceCaretIndex(caretIndex, value); - SelectionStart = TextBox.CoerceCaretIndex(selectionStart, value); - SelectionEnd = TextBox.CoerceCaretIndex(selectionEnd, value); + CaretIndex = CoerceCaretIndex(caretIndex, value); + SelectionStart = CoerceCaretIndex(selectionStart, value); + SelectionEnd = CoerceCaretIndex(selectionEnd, value); var textChanged = SetAndRaise(TextProperty, ref _text, value); @@ -1380,7 +1379,7 @@ namespace Avalonia.Controls } } - private int CoerceCaretIndex(int value) => TextBox.CoerceCaretIndex(value, Text); + private int CoerceCaretIndex(int value) => CoerceCaretIndex(value, Text); private static int CoerceCaretIndex(int value, string? text) { diff --git a/src/Avalonia.Controls/TopLevel.cs b/src/Avalonia.Controls/TopLevel.cs index 9fad9824df..b723d21710 100644 --- a/src/Avalonia.Controls/TopLevel.cs +++ b/src/Avalonia.Controls/TopLevel.cs @@ -449,7 +449,7 @@ namespace Avalonia.Controls { if(transparencyLevel == WindowTransparencyLevel.None || TransparencyLevelHint == WindowTransparencyLevel.None || - !TopLevel.TransparencyLevelsMatch(TransparencyLevelHint, transparencyLevel)) + !TransparencyLevelsMatch(TransparencyLevelHint, transparencyLevel)) { _transparencyFallbackBorder.Background = TransparencyBackgroundFallback; } diff --git a/src/Avalonia.Controls/TreeView.cs b/src/Avalonia.Controls/TreeView.cs index be30792cc8..e897339afd 100644 --- a/src/Avalonia.Controls/TreeView.cs +++ b/src/Avalonia.Controls/TreeView.cs @@ -3,13 +3,11 @@ using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; -using System.ComponentModel; using System.Linq; using System.Reactive.Linq; using Avalonia.Collections; using Avalonia.Controls.Generators; using Avalonia.Controls.Primitives; -using Avalonia.Controls.Utils; using Avalonia.Data; using Avalonia.Input; using Avalonia.Input.Platform; @@ -284,7 +282,7 @@ namespace Avalonia.Controls foreach (IControl container in ItemContainerGenerator.Index!.Containers) { - TreeView.MarkContainerSelected(container, false); + MarkContainerSelected(container, false); } if (SelectedItems.Count > 0) @@ -339,7 +337,7 @@ namespace Avalonia.Controls { var container = ItemContainerGenerator.Index!.ContainerFromItem(item)!; - TreeView.MarkContainerSelected(container, selected); + MarkContainerSelected(container, selected); } private void SelectedItemsAdded(IList items) diff --git a/src/Avalonia.Diagnostics/Diagnostics/Screenshots/FilePickerHandler.cs b/src/Avalonia.Diagnostics/Diagnostics/Screenshots/FilePickerHandler.cs index 325c55783c..dca1e8008c 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/Screenshots/FilePickerHandler.cs +++ b/src/Avalonia.Diagnostics/Diagnostics/Screenshots/FilePickerHandler.cs @@ -61,7 +61,7 @@ namespace Avalonia.Diagnostics.Screenshots protected async override Task GetStream(IControl control) { Stream? output = default; - var result = await FilePickerHandler.GetWindow(control).StorageProvider.SaveFilePickerAsync(new FilePickerSaveOptions + var result = await GetWindow(control).StorageProvider.SaveFilePickerAsync(new FilePickerSaveOptions { SuggestedStartLocation = new BclStorageFolder(new DirectoryInfo(ScreenshotsRoot)), Title = Title, diff --git a/src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs b/src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs index 869b2fd600..39b9e3d3f0 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs +++ b/src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs @@ -34,8 +34,8 @@ namespace Avalonia.Diagnostics.ViewModels { _avaloniaObject = avaloniaObject; - TreePage = treePage; - Layout = avaloniaObject is IVisual + TreePage = treePage; + Layout = avaloniaObject is IVisual ? new ControlLayoutViewModel((IVisual)avaloniaObject) : default; @@ -83,7 +83,7 @@ namespace Avalonia.Diagnostics.ViewModels { var setterValue = regularSetter.Value; - var resourceInfo = ControlDetailsViewModel.GetResourceInfo(setterValue); + var resourceInfo = GetResourceInfo(setterValue); SetterViewModel setterVm; @@ -137,7 +137,7 @@ namespace Avalonia.Diagnostics.ViewModels return null; } - private bool IsBinding(object? value) + private static bool IsBinding(object? value) { switch (value) { @@ -254,7 +254,7 @@ namespace Avalonia.Diagnostics.ViewModels } } - private IEnumerable GetAvaloniaProperties(object o) + private static IEnumerable GetAvaloniaProperties(object o) { if (o is AvaloniaObject ao) { @@ -268,7 +268,7 @@ namespace Avalonia.Diagnostics.ViewModels } } - private IEnumerable GetClrProperties(object o, bool showImplementedInterfaces) + private static IEnumerable GetClrProperties(object o, bool showImplementedInterfaces) { foreach (var p in GetClrProperties(o, o.GetType())) { @@ -287,7 +287,7 @@ namespace Avalonia.Diagnostics.ViewModels } } - private IEnumerable GetClrProperties(object o, Type t) + private static IEnumerable GetClrProperties(object o, Type t) { return t.GetProperties() .Where(x => x.GetIndexParameters().Length == 0) @@ -412,7 +412,7 @@ namespace Avalonia.Diagnostics.ViewModels } } - private int GroupIndex(string? group) + private static int GroupIndex(string? group) { switch (group) { diff --git a/src/Avalonia.FreeDesktop/LinuxMountedVolumeInfoListener.cs b/src/Avalonia.FreeDesktop/LinuxMountedVolumeInfoListener.cs index 2d6a2569fb..34c1506a67 100644 --- a/src/Avalonia.FreeDesktop/LinuxMountedVolumeInfoListener.cs +++ b/src/Avalonia.FreeDesktop/LinuxMountedVolumeInfoListener.cs @@ -36,12 +36,12 @@ namespace Avalonia.FreeDesktop private static string GetSymlinkTarget(string x) => Path.GetFullPath(Path.Combine(DevByLabelDir, NativeMethods.ReadLink(x))); - private string UnescapeString(string input, string regexText, int escapeBase) => + private static string UnescapeString(string input, string regexText, int escapeBase) => new Regex(regexText).Replace(input, m => Convert.ToChar(Convert.ToByte(m.Groups[1].Value, escapeBase)).ToString()); - private string UnescapePathFromProcMounts(string input) => UnescapeString(input, @"\\(\d{3})", 8); + private static string UnescapePathFromProcMounts(string input) => UnescapeString(input, @"\\(\d{3})", 8); - private string UnescapeDeviceLabel(string input) => UnescapeString(input, @"\\x([0-9a-f]{2})", 16); + private static string UnescapeDeviceLabel(string input) => UnescapeString(input, @"\\x([0-9a-f]{2})", 16); private void Poll(long _) { @@ -61,7 +61,7 @@ namespace Avalonia.FreeDesktop new DirectoryInfo(DevByLabelDir).GetFiles() : Enumerable.Empty(); var labelDevPathPairs = labelDirEnum - .Select(x => (LinuxMountedVolumeInfoListener.GetSymlinkTarget(x.FullName), UnescapeDeviceLabel(x.Name))); + .Select(x => (GetSymlinkTarget(x.FullName), UnescapeDeviceLabel(x.Name))); var q1 = from mount in fProcMounts join device in fProcPartitions on mount.Item1 equals device.Item2 diff --git a/src/Avalonia.Native/AvaloniaNativeDragSource.cs b/src/Avalonia.Native/AvaloniaNativeDragSource.cs index f93d558d25..84e2b31f23 100644 --- a/src/Avalonia.Native/AvaloniaNativeDragSource.cs +++ b/src/Avalonia.Native/AvaloniaNativeDragSource.cs @@ -48,7 +48,7 @@ namespace Avalonia.Native public Task DoDragDrop(PointerEventArgs triggerEvent, IDataObject data, DragDropEffects allowedEffects) { // Sanity check - var tl = AvaloniaNativeDragSource.FindRoot(triggerEvent.Source); + var tl = FindRoot(triggerEvent.Source); var view = tl?.PlatformImpl as WindowBaseImpl; if (view == null) throw new ArgumentException(); diff --git a/src/Avalonia.Native/AvaloniaNativeMenuExporter.cs b/src/Avalonia.Native/AvaloniaNativeMenuExporter.cs index ddabfe8f5d..7c7b32f7e4 100644 --- a/src/Avalonia.Native/AvaloniaNativeMenuExporter.cs +++ b/src/Avalonia.Native/AvaloniaNativeMenuExporter.cs @@ -167,7 +167,7 @@ namespace Avalonia.Native if (appMenu == null) { - appMenu = AvaloniaNativeMenuExporter.CreateDefaultAppMenu(); + appMenu = CreateDefaultAppMenu(); NativeMenu.SetMenu(Application.Current, appMenu); } diff --git a/src/Avalonia.Native/IAvnMenu.cs b/src/Avalonia.Native/IAvnMenu.cs index f75621865c..709980c6b9 100644 --- a/src/Avalonia.Native/IAvnMenu.cs +++ b/src/Avalonia.Native/IAvnMenu.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Collections.Specialized; using System.Reactive.Disposables; using Avalonia.Controls; -using Avalonia.Platform.Interop; namespace Avalonia.Native.Interop { @@ -111,7 +110,7 @@ namespace Avalonia.Native.Interop.Impl private __MicroComIAvnMenuItemProxy CreateNewAt(IAvaloniaNativeFactory factory, int index, NativeMenuItemBase item) { - var result = __MicroComIAvnMenuProxy.CreateNew(factory, item); + var result = CreateNew(factory, item); result.Initialize(item); diff --git a/src/Avalonia.OpenGL/Controls/OpenGlControlBase.cs b/src/Avalonia.OpenGL/Controls/OpenGlControlBase.cs index 6f87ff19ee..e13ee80864 100644 --- a/src/Avalonia.OpenGL/Controls/OpenGlControlBase.cs +++ b/src/Avalonia.OpenGL/Controls/OpenGlControlBase.cs @@ -27,7 +27,7 @@ namespace Avalonia.OpenGL.Controls _context.GlInterface.BindFramebuffer(GL_FRAMEBUFFER, _fb); EnsureTextureAttachment(); EnsureDepthBufferAttachment(_context.GlInterface); - if(!OpenGlControlBase.CheckFramebufferStatus(_context.GlInterface)) + if(!CheckFramebufferStatus(_context.GlInterface)) return; OnOpenGlRender(_context.GlInterface, _fb); @@ -186,7 +186,7 @@ namespace Avalonia.OpenGL.Controls EnsureDepthBufferAttachment(gl); EnsureTextureAttachment(); - return OpenGlControlBase.CheckFramebufferStatus(gl); + return CheckFramebufferStatus(gl); } catch(Exception e) { diff --git a/src/Avalonia.ReactiveUI/AvaloniaActivationForViewFetcher.cs b/src/Avalonia.ReactiveUI/AvaloniaActivationForViewFetcher.cs index 94073506e3..ed55192bf5 100644 --- a/src/Avalonia.ReactiveUI/AvaloniaActivationForViewFetcher.cs +++ b/src/Avalonia.ReactiveUI/AvaloniaActivationForViewFetcher.cs @@ -26,8 +26,8 @@ namespace Avalonia.ReactiveUI public IObservable GetActivationForView(IActivatableView view) { if (!(view is IVisual visual)) return Observable.Return(false); - if (view is Control control) return AvaloniaActivationForViewFetcher.GetActivationForControl(control); - return AvaloniaActivationForViewFetcher.GetActivationForVisual(visual); + if (view is Control control) return GetActivationForControl(control); + return GetActivationForVisual(visual); } /// diff --git a/src/Avalonia.X11/X11IconLoader.cs b/src/Avalonia.X11/X11IconLoader.cs index de7c57a556..4ae1c1599f 100644 --- a/src/Avalonia.X11/X11IconLoader.cs +++ b/src/Avalonia.X11/X11IconLoader.cs @@ -16,9 +16,9 @@ namespace Avalonia.X11 return rv; } - public IWindowIconImpl LoadIcon(string fileName) => X11IconLoader.LoadIcon(new Bitmap(fileName)); + public IWindowIconImpl LoadIcon(string fileName) => LoadIcon(new Bitmap(fileName)); - public IWindowIconImpl LoadIcon(Stream stream) => X11IconLoader.LoadIcon(new Bitmap(stream)); + public IWindowIconImpl LoadIcon(Stream stream) => LoadIcon(new Bitmap(stream)); public IWindowIconImpl LoadIcon(IBitmapImpl bitmap) { diff --git a/src/Avalonia.X11/X11Platform.cs b/src/Avalonia.X11/X11Platform.cs index 312945e713..6ffebaf32b 100644 --- a/src/Avalonia.X11/X11Platform.cs +++ b/src/Avalonia.X11/X11Platform.cs @@ -5,7 +5,6 @@ using System.Reflection; using System.Runtime.InteropServices; using Avalonia.Controls; using Avalonia.Controls.Platform; -using Avalonia.Dialogs; using Avalonia.FreeDesktop; using Avalonia.FreeDesktop.DBusIme; using Avalonia.Input; @@ -42,10 +41,10 @@ namespace Avalonia.X11 Options = options; bool useXim = false; - if (AvaloniaX11Platform.EnableIme(options)) + if (EnableIme(options)) { // Attempt to configure DBus-based input method and check if we can fall back to XIM - if (!X11DBusImeHelper.DetectAndRegister() && AvaloniaX11Platform.ShouldUseXim()) + if (!X11DBusImeHelper.DetectAndRegister() && ShouldUseXim()) useXim = true; } @@ -85,7 +84,7 @@ namespace Avalonia.X11 .Bind().ToConstant(new LinuxMountedVolumeInfoProvider()) .Bind().ToConstant(new X11PlatformLifetimeEvents(this)); - X11Screens = Avalonia.X11.X11Screens.Init(this); + X11Screens = X11.X11Screens.Init(this); Screens = new X11Screens(X11Screens); if (Info.XInputVersion != null) { diff --git a/src/Avalonia.X11/X11Window.Ime.cs b/src/Avalonia.X11/X11Window.Ime.cs index 128d48957c..8b267b2762 100644 --- a/src/Avalonia.X11/X11Window.Ime.cs +++ b/src/Avalonia.X11/X11Window.Ime.cs @@ -2,7 +2,6 @@ using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Text; -using System.Threading.Tasks; using Avalonia.FreeDesktop; using Avalonia.Input; using Avalonia.Input.Raw; @@ -107,7 +106,7 @@ namespace Avalonia.X11 var filtered = ScheduleKeyInput(new RawKeyEventArgs(_keyboard, (ulong)ev.KeyEvent.time.ToInt64(), _inputRoot, ev.type == XEventName.KeyPress ? RawKeyEventType.KeyDown : RawKeyEventType.KeyUp, - X11KeyTransform.ConvertKey(key), X11Window.TranslateModifiers(ev.KeyEvent.state)), ref ev, (int)key, ev.KeyEvent.keycode); + X11KeyTransform.ConvertKey(key), TranslateModifiers(ev.KeyEvent.state)), ref ev, (int)key, ev.KeyEvent.keycode); if (ev.type == XEventName.KeyPress && !filtered) TriggerClassicTextInputEvent(ref ev); diff --git a/src/Avalonia.X11/X11Window.cs b/src/Avalonia.X11/X11Window.cs index b2120b718e..5d8ff0884b 100644 --- a/src/Avalonia.X11/X11Window.cs +++ b/src/Avalonia.X11/X11Window.cs @@ -1,9 +1,7 @@ using System; using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; using System.Diagnostics; using System.Linq; -using System.Reactive.Disposables; using System.Text; using System.Threading.Tasks; using System.Threading; @@ -463,7 +461,7 @@ namespace Avalonia.X11 : new Vector(-1, 0); ScheduleInput(new RawMouseWheelEventArgs(_mouse, (ulong)ev.ButtonEvent.time.ToInt64(), _inputRoot, new Point(ev.ButtonEvent.x, ev.ButtonEvent.y), delta, - X11Window.TranslateModifiers(ev.ButtonEvent.state)), ref ev); + TranslateModifiers(ev.ButtonEvent.state)), ref ev); } } @@ -760,7 +758,7 @@ namespace Avalonia.X11 { var mev = new RawPointerEventArgs( _mouse, (ulong)ev.ButtonEvent.time.ToInt64(), _inputRoot, - type, new Point(ev.ButtonEvent.x, ev.ButtonEvent.y), X11Window.TranslateModifiers(mods)); + type, new Point(ev.ButtonEvent.x, ev.ButtonEvent.y), TranslateModifiers(mods)); ScheduleInput(mev, ref ev); } diff --git a/src/Avalonia.X11/XI2Manager.cs b/src/Avalonia.X11/XI2Manager.cs index 952112b6fd..cfe55036a3 100644 --- a/src/Avalonia.X11/XI2Manager.cs +++ b/src/Avalonia.X11/XI2Manager.cs @@ -193,7 +193,7 @@ namespace Avalonia.X11 { var rev = (XIEnterLeaveEvent*)xev; if (_clients.TryGetValue(rev->EventWindow, out var client)) - XI2Manager.OnEnterLeaveEvent(client, ref *rev); + OnEnterLeaveEvent(client, ref *rev); } } diff --git a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs index 12406df765..264361e743 100644 --- a/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs +++ b/src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs @@ -1,11 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Xml; using Avalonia.Markup.Xaml.Parsers; using Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers; using Avalonia.Utilities; -using XamlX; using XamlX.Ast; using XamlX.Transform; using XamlX.Transform.Transformers; diff --git a/src/Markup/Avalonia.Markup.Xaml/Converters/IconTypeConverter.cs b/src/Markup/Avalonia.Markup.Xaml/Converters/IconTypeConverter.cs index 078efcab6e..24b690b6f1 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Converters/IconTypeConverter.cs +++ b/src/Markup/Avalonia.Markup.Xaml/Converters/IconTypeConverter.cs @@ -20,7 +20,7 @@ namespace Avalonia.Markup.Xaml.Converters var path = value as string; if (path != null) { - return IconTypeConverter.CreateIconFromPath(context, path); + return CreateIconFromPath(context, path); } var bitmap = value as IBitmap; diff --git a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/DynamicResourceExtension.cs b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/DynamicResourceExtension.cs index 01d98ac9fb..dbcac7a2a3 100644 --- a/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/DynamicResourceExtension.cs +++ b/src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/DynamicResourceExtension.cs @@ -56,12 +56,12 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions if (control != null) { - var source = control.GetResourceObservable(ResourceKey, DynamicResourceExtension.GetConverter(targetProperty)); + var source = control.GetResourceObservable(ResourceKey, GetConverter(targetProperty)); return InstancedBinding.OneWay(source, _priority); } else if (_anchor is IResourceProvider resourceProvider) { - var source = resourceProvider.GetResourceObservable(ResourceKey, DynamicResourceExtension.GetConverter(targetProperty)); + var source = resourceProvider.GetResourceObservable(ResourceKey, GetConverter(targetProperty)); return InstancedBinding.OneWay(source, _priority); } diff --git a/src/Markup/Avalonia.Markup.Xaml/Parsers/PropertyParser.cs b/src/Markup/Avalonia.Markup.Xaml/Parsers/PropertyParser.cs index de463e2903..507e0690fd 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Parsers/PropertyParser.cs +++ b/src/Markup/Avalonia.Markup.Xaml/Parsers/PropertyParser.cs @@ -1,6 +1,4 @@ -using System; -using Avalonia.Data.Core; -using Avalonia.Markup.Parsers; +using Avalonia.Data.Core; using Avalonia.Utilities; namespace Avalonia.Markup.Xaml.Parsers diff --git a/src/Markup/Avalonia.Markup/Markup/Parsers/Nodes/StringIndexerNode.cs b/src/Markup/Avalonia.Markup/Markup/Parsers/Nodes/StringIndexerNode.cs index 824911902b..6176608196 100644 --- a/src/Markup/Avalonia.Markup/Markup/Parsers/Nodes/StringIndexerNode.cs +++ b/src/Markup/Avalonia.Markup/Markup/Parsers/Nodes/StringIndexerNode.cs @@ -113,9 +113,9 @@ namespace Avalonia.Markup.Parsers.Nodes } - private bool SetValueInArray(Array array, int[] indices, object? value) + private static bool SetValueInArray(Array array, int[] indices, object? value) { - if (StringIndexerNode.ValidBounds(indices, array)) + if (ValidBounds(indices, array)) { array.SetValue(value, indices); return true; @@ -223,9 +223,9 @@ namespace Avalonia.Markup.Parsers.Nodes return GetValueFromArray(array, intArgs); } - private object? GetValueFromArray(Array array, int[] indices) + private static object? GetValueFromArray(Array array, int[] indices) { - if (StringIndexerNode.ValidBounds(indices, array)) + if (ValidBounds(indices, array)) { return array.GetValue(indices); } diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index 46c8109fd8..60be732b8e 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -429,7 +429,7 @@ namespace Avalonia.Skia var spread = (float)boxShadow.Spread; var offsetX = (float)boxShadow.OffsetX; var offsetY = (float)boxShadow.OffsetY; - var outerRect = DrawingContextImpl.AreaCastingShadowInHole(rc, (float)boxShadow.Blur, spread, offsetX, offsetY); + var outerRect = AreaCastingShadowInHole(rc, (float)boxShadow.Blur, spread, offsetX, offsetY); Canvas.Save(); using var shadowRect = new SKRoundRect(skRoundRect); @@ -1044,7 +1044,7 @@ namespace Avalonia.Skia if (brush is IGradientBrush gradient) { - DrawingContextImpl.ConfigureGradientBrush(ref paintWrapper, targetSize, gradient); + ConfigureGradientBrush(ref paintWrapper, targetSize, gradient); return paintWrapper; } diff --git a/src/Windows/Avalonia.Win32/ClipboardImpl.cs b/src/Windows/Avalonia.Win32/ClipboardImpl.cs index 813903c270..85c97307e8 100644 --- a/src/Windows/Avalonia.Win32/ClipboardImpl.cs +++ b/src/Windows/Avalonia.Win32/ClipboardImpl.cs @@ -31,7 +31,7 @@ namespace Avalonia.Win32 public async Task GetTextAsync() { - using(await ClipboardImpl.OpenClipboard()) + using(await OpenClipboard()) { IntPtr hText = UnmanagedMethods.GetClipboardData(UnmanagedMethods.ClipboardFormat.CF_UNICODETEXT); if (hText == IntPtr.Zero) @@ -58,7 +58,7 @@ namespace Avalonia.Win32 throw new ArgumentNullException(nameof(text)); } - using(await ClipboardImpl.OpenClipboard()) + using(await OpenClipboard()) { UnmanagedMethods.EmptyClipboard(); @@ -69,7 +69,7 @@ namespace Avalonia.Win32 public async Task ClearAsync() { - using(await ClipboardImpl.OpenClipboard()) + using(await OpenClipboard()) { UnmanagedMethods.EmptyClipboard(); } diff --git a/src/Windows/Avalonia.Win32/CursorFactory.cs b/src/Windows/Avalonia.Win32/CursorFactory.cs index 73e45db6d3..862e99be19 100644 --- a/src/Windows/Avalonia.Win32/CursorFactory.cs +++ b/src/Windows/Avalonia.Win32/CursorFactory.cs @@ -92,7 +92,7 @@ namespace Avalonia.Win32 public ICursorImpl CreateCursor(IBitmapImpl cursor, PixelPoint hotSpot) { - using var source = CursorFactory.LoadSystemDrawingBitmap(cursor); + using var source = LoadSystemDrawingBitmap(cursor); using var mask = AlphaToMask(source); var info = new UnmanagedMethods.ICONINFO diff --git a/src/Windows/Avalonia.Win32/DataObject.cs b/src/Windows/Avalonia.Win32/DataObject.cs index c6ac9e63f5..27560df35e 100644 --- a/src/Windows/Avalonia.Win32/DataObject.cs +++ b/src/Windows/Avalonia.Win32/DataObject.cs @@ -288,7 +288,7 @@ namespace Avalonia.Win32 var byteArr = bytes is byte[] ? (byte[])bytes : bytes.ToArray(); return WriteBytesToHGlobal(ref hGlobal, byteArr); } - return WriteBytesToHGlobal(ref hGlobal, DataObject.SerializeObject(data)); + return WriteBytesToHGlobal(ref hGlobal, SerializeObject(data)); } private static byte[] SerializeObject(object data) @@ -302,7 +302,7 @@ namespace Avalonia.Win32 } } - private unsafe uint WriteBytesToHGlobal(ref IntPtr hGlobal, ReadOnlySpan data) + private static unsafe uint WriteBytesToHGlobal(ref IntPtr hGlobal, ReadOnlySpan data) { int required = data.Length; if (hGlobal == IntPtr.Zero) @@ -326,7 +326,7 @@ namespace Avalonia.Win32 } } - private uint WriteFileListToHGlobal(ref IntPtr hGlobal, IEnumerable files) + private static uint WriteFileListToHGlobal(ref IntPtr hGlobal, IEnumerable files) { if (!files?.Any() ?? false) return unchecked((int)UnmanagedMethods.HRESULT.S_OK); @@ -358,7 +358,7 @@ namespace Avalonia.Win32 } } - private uint WriteStringToHGlobal(ref IntPtr hGlobal, string data) + private static uint WriteStringToHGlobal(ref IntPtr hGlobal, string data) { int required = (data.Length + 1) * sizeof(char); if (hGlobal == IntPtr.Zero) diff --git a/src/tools/DevGenerators/CompositionGenerator/Generator.cs b/src/tools/DevGenerators/CompositionGenerator/Generator.cs index c5f5ffcea4..0fb0389ca8 100644 --- a/src/tools/DevGenerators/CompositionGenerator/Generator.cs +++ b/src/tools/DevGenerators/CompositionGenerator/Generator.cs @@ -540,7 +540,7 @@ var changed = reader.Read<{ChangedFieldsTypeName(cl)}>(); return cl.AddMembers(method); } - ClassDeclarationSyntax WithStartAnimation(ClassDeclarationSyntax cl, BlockSyntax body) + static ClassDeclarationSyntax WithStartAnimation(ClassDeclarationSyntax cl, BlockSyntax body) { body = body.AddStatements( ExpressionStatement(InvocationExpression(MemberAccess("base", "StartAnimation"), From 6213676115ae823cb70b1f8ad674a3900836a87b Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Mon, 17 Oct 2022 17:00:15 +0200 Subject: [PATCH 22/38] fix: Address CA1822 rule --- src/Windows/Avalonia.Win32/Win32Platform.cs | 38 +++++++++---------- .../Avalonia.Win32/WindowImpl.AppWndProc.cs | 4 +- .../WindowImpl.CustomCaptionProc.cs | 4 +- src/Windows/Avalonia.Win32/WindowImpl.cs | 7 ++-- .../CompositionGenerator/Generator.cs | 36 +++++++++--------- .../RenderTests_Culling.cs | 2 +- .../Rendering/DeferredRendererTests.cs | 10 ++--- .../AutoCompleteBoxTests.cs | 2 +- .../ButtonTests.cs | 2 +- .../CalendarDatePickerTests.cs | 4 +- .../Avalonia.Controls.UnitTests/GridTests.cs | 4 +- .../ListBoxTests.cs | 6 +-- .../MaskedTextBoxTests.cs | 6 +-- .../NumericUpDownTests.cs | 2 +- .../Primitives/PopupTests.cs | 2 +- .../TextBoxTests.cs | 8 ++-- .../TreeViewTests.cs | 2 +- .../CompiledBindingExtensionTests.cs | 10 ++--- .../DynamicResourceExtensionTests.cs | 20 +++++----- .../StaticResourceExtensionTests.cs | 12 +++--- .../Xaml/ResourceDictionaryTests.cs | 26 ++++++------- .../Xaml/XamlIlTests.cs | 2 +- 22 files changed, 105 insertions(+), 104 deletions(-) diff --git a/src/Windows/Avalonia.Win32/Win32Platform.cs b/src/Windows/Avalonia.Win32/Win32Platform.cs index 3cdc3586dc..69b47540a9 100644 --- a/src/Windows/Avalonia.Win32/Win32Platform.cs +++ b/src/Windows/Avalonia.Win32/Win32Platform.cs @@ -131,10 +131,10 @@ namespace Avalonia.Win32 internal static Compositor Compositor { get; private set; } public Size DoubleClickSize => new Size( - UnmanagedMethods.GetSystemMetrics(UnmanagedMethods.SystemMetric.SM_CXDOUBLECLK), - UnmanagedMethods.GetSystemMetrics(UnmanagedMethods.SystemMetric.SM_CYDOUBLECLK)); + GetSystemMetrics(SystemMetric.SM_CXDOUBLECLK), + GetSystemMetrics(SystemMetric.SM_CYDOUBLECLK)); - public TimeSpan DoubleClickTime => TimeSpan.FromMilliseconds(UnmanagedMethods.GetDoubleClickTime()); + public TimeSpan DoubleClickTime => TimeSpan.FromMilliseconds(GetDoubleClickTime()); /// public Size TouchDoubleClickSize => new Size(16,16); @@ -185,16 +185,16 @@ namespace Avalonia.Win32 public bool HasMessages() { UnmanagedMethods.MSG msg; - return UnmanagedMethods.PeekMessage(out msg, IntPtr.Zero, 0, 0, 0); + return PeekMessage(out msg, IntPtr.Zero, 0, 0, 0); } public void ProcessMessage() { - if (UnmanagedMethods.GetMessage(out var msg, IntPtr.Zero, 0, 0) > -1) + if (GetMessage(out var msg, IntPtr.Zero, 0, 0) > -1) { - UnmanagedMethods.TranslateMessage(ref msg); - UnmanagedMethods.DispatchMessage(ref msg); + TranslateMessage(ref msg); + DispatchMessage(ref msg); } else { @@ -208,10 +208,10 @@ namespace Avalonia.Win32 { var result = 0; while (!cancellationToken.IsCancellationRequested - && (result = UnmanagedMethods.GetMessage(out var msg, IntPtr.Zero, 0, 0)) > 0) + && (result = GetMessage(out var msg, IntPtr.Zero, 0, 0)) > 0) { - UnmanagedMethods.TranslateMessage(ref msg); - UnmanagedMethods.DispatchMessage(ref msg); + TranslateMessage(ref msg); + DispatchMessage(ref msg); } if (result < 0) { @@ -225,7 +225,7 @@ namespace Avalonia.Win32 UnmanagedMethods.TimerProc timerDelegate = (hWnd, uMsg, nIDEvent, dwTime) => callback(); - IntPtr handle = UnmanagedMethods.SetTimer( + IntPtr handle = SetTimer( IntPtr.Zero, IntPtr.Zero, (uint)interval.TotalMilliseconds, @@ -237,7 +237,7 @@ namespace Avalonia.Win32 return Disposable.Create(() => { _delegates.Remove(timerDelegate); - UnmanagedMethods.KillTimer(IntPtr.Zero, handle); + KillTimer(IntPtr.Zero, handle); }); } @@ -246,9 +246,9 @@ namespace Avalonia.Win32 public void Signal(DispatcherPriority prio) { - UnmanagedMethods.PostMessage( + PostMessage( _hwnd, - (int) UnmanagedMethods.WindowsMessage.WM_DISPATCH_WORK_ITEM, + (int)WindowsMessage.WM_DISPATCH_WORK_ITEM, new IntPtr(SignalW), new IntPtr(SignalL)); } @@ -262,7 +262,7 @@ namespace Avalonia.Win32 [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", "SA1305:FieldNamesMustNotUseHungarianNotation", Justification = "Using Win32 naming for consistency.")] private IntPtr WndProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam) { - if (msg == (int) UnmanagedMethods.WindowsMessage.WM_DISPATCH_WORK_ITEM && wParam.ToInt64() == SignalW && lParam.ToInt64() == SignalL) + if (msg == (int)WindowsMessage.WM_DISPATCH_WORK_ITEM && wParam.ToInt64() == SignalW && lParam.ToInt64() == SignalL) { Signaled?.Invoke(null); } @@ -284,7 +284,7 @@ namespace Avalonia.Win32 TrayIconImpl.ProcWnd(hWnd, msg, wParam, lParam); - return UnmanagedMethods.DefWindowProc(hWnd, msg, wParam, lParam); + return DefWindowProc(hWnd, msg, wParam, lParam); } private void CreateMessageWindow() @@ -296,18 +296,18 @@ namespace Avalonia.Win32 { cbSize = Marshal.SizeOf(), lpfnWndProc = _wndProcDelegate, - hInstance = UnmanagedMethods.GetModuleHandle(null), + hInstance = GetModuleHandle(null), lpszClassName = "AvaloniaMessageWindow " + Guid.NewGuid(), }; - ushort atom = UnmanagedMethods.RegisterClassEx(ref wndClassEx); + ushort atom = RegisterClassEx(ref wndClassEx); if (atom == 0) { throw new Win32Exception(); } - _hwnd = UnmanagedMethods.CreateWindowEx(0, atom, null, 0, 0, 0, 0, 0, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); + _hwnd = CreateWindowEx(0, atom, null, 0, 0, 0, 0, 0, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); if (_hwnd == IntPtr.Zero) { diff --git a/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs b/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs index f8785371d9..9855435e9f 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.AppWndProc.cs @@ -356,7 +356,7 @@ namespace Avalonia.Win32 RawPointerEventType.XButton1Down : RawPointerEventType.XButton2Down, }, - PointToClient(PointFromLParam(lParam)), GetMouseModifiers(wParam)); + PointToClient(WindowImpl.PointFromLParam(lParam)), GetMouseModifiers(wParam)); break; } case WindowsMessage.WM_TOUCH: @@ -948,7 +948,7 @@ namespace Avalonia.Win32 return new Point((short)(ToInt32(lParam) & 0xffff), (short)(ToInt32(lParam) >> 16)) / RenderScaling; } - private PixelPoint PointFromLParam(IntPtr lParam) + private static PixelPoint PointFromLParam(IntPtr lParam) { return new PixelPoint((short)(ToInt32(lParam) & 0xffff), (short)(ToInt32(lParam) >> 16)); } diff --git a/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs b/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs index e864f32138..c7dc90ed58 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.CustomCaptionProc.cs @@ -13,7 +13,7 @@ namespace Avalonia.Win32 private HitTestValues HitTestNCA(IntPtr hWnd, IntPtr wParam, IntPtr lParam) { // Get the point coordinates for the hit test (screen space). - var ptMouse = PointFromLParam(lParam); + var ptMouse = WindowImpl.PointFromLParam(lParam); // Get the window rectangle. GetWindowRect(hWnd, out var rcWindow); @@ -105,7 +105,7 @@ namespace Avalonia.Win32 if (hittestResult == HitTestValues.HTCAPTION) { - var position = PointToClient(PointFromLParam(lParam)); + var position = PointToClient(WindowImpl.PointFromLParam(lParam)); if (_owner is Window window) { diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs index 0f243fcf9f..6e849a5b9d 100644 --- a/src/Windows/Avalonia.Win32/WindowImpl.cs +++ b/src/Windows/Avalonia.Win32/WindowImpl.cs @@ -639,7 +639,7 @@ namespace Avalonia.Win32 public Point PointToClient(PixelPoint point) { var p = new POINT { X = point.X, Y = point.Y }; - UnmanagedMethods.ScreenToClient(_hwnd, ref p); + ScreenToClient(_hwnd, ref p); return new Point(p.X, p.Y) / RenderScaling; } @@ -1321,12 +1321,13 @@ namespace Avalonia.Win32 private const int MF_DISABLED = 0x2; private const int SC_CLOSE = 0xF060; - void DisableCloseButton(IntPtr hwnd) + static void DisableCloseButton(IntPtr hwnd) { EnableMenuItem(GetSystemMenu(hwnd, false), SC_CLOSE, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); } - void EnableCloseButton(IntPtr hwnd) + + static void EnableCloseButton(IntPtr hwnd) { EnableMenuItem(GetSystemMenu(hwnd, false), SC_CLOSE, MF_BYCOMMAND | MF_ENABLED); diff --git a/src/tools/DevGenerators/CompositionGenerator/Generator.cs b/src/tools/DevGenerators/CompositionGenerator/Generator.cs index 0fb0389ca8..f8d5ad826e 100644 --- a/src/tools/DevGenerators/CompositionGenerator/Generator.cs +++ b/src/tools/DevGenerators/CompositionGenerator/Generator.cs @@ -311,7 +311,7 @@ namespace Avalonia.SourceGenerator.CompositionGenerator "Server", "Server" + cl.Name + ".generated.cs"); } - private ClassDeclarationSyntax GenerateClientProperty(ClassDeclarationSyntax client, GClass cl, GProperty prop, + private static ClassDeclarationSyntax GenerateClientProperty(ClassDeclarationSyntax client, GClass cl, GProperty prop, TypeSyntax propType, bool isObject, bool isNullable) { var fieldName = PropertyBackingFieldName(prop); @@ -344,7 +344,7 @@ namespace Avalonia.SourceGenerator.CompositionGenerator .AddModifiers(SyntaxKind.PartialKeyword).WithSemicolonToken(Semicolon())); } - EnumDeclarationSyntax GenerateChangedFieldsEnum(GClass cl) + static EnumDeclarationSyntax GenerateChangedFieldsEnum(GClass cl) { var changedFieldsEnum = EnumDeclaration(Identifier(ChangedFieldsTypeName(cl))); int count = 0; @@ -371,7 +371,7 @@ namespace Avalonia.SourceGenerator.CompositionGenerator .AddAttributeLists(AttributeList(SingletonSeparatedList(Attribute(IdentifierName("System.Flags"))))); } - StatementSyntax GeneratePropertySetterAssignment(GClass cl, GProperty prop, bool isObject, bool isNullable) + static StatementSyntax GeneratePropertySetterAssignment(GClass cl, GProperty prop, bool isObject, bool isNullable) { var code = @$" // Update the backing value @@ -404,8 +404,8 @@ namespace Avalonia.SourceGenerator.CompositionGenerator return ParseStatement("{\n" + code + "\n}"); } - - BlockSyntax ApplyStartAnimation(BlockSyntax body, GClass cl, GProperty prop) + + static BlockSyntax ApplyStartAnimation(BlockSyntax body, GClass cl, GProperty prop) { var code = $@" if (propertyName == ""{prop.Name}"") @@ -435,8 +435,8 @@ return; "Color", "Avalonia.Media.Color" }; - - BlockSyntax ApplyGetProperty(BlockSyntax body, GProperty prop, string? expr = null) + + static BlockSyntax ApplyGetProperty(BlockSyntax body, GProperty prop, string? expr = null) { if (VariantPropertyTypes.Contains(prop.Type)) return body.AddStatements( @@ -446,7 +446,7 @@ return; return body; } - private BlockSyntax SerializeChangesPrologue(GClass cl) + private static BlockSyntax SerializeChangesPrologue(GClass cl) { return Block( ParseStatement("base.SerializeChangesCore(writer);"), @@ -454,10 +454,10 @@ return; ); } - private BlockSyntax SerializeChangesEpilogue(GClass cl) => + private static BlockSyntax SerializeChangesEpilogue(GClass cl) => Block(ParseStatement(ChangedFieldsFieldName(cl) + " = default;")); - - BlockSyntax ApplySerializeField(BlockSyntax body, GClass cl, GProperty prop, bool isObject, bool isPassthrough) + + static BlockSyntax ApplySerializeField(BlockSyntax body, GClass cl, GProperty prop, bool isObject, bool isPassthrough) { var changedFields = ChangedFieldsFieldName(cl); var changedFieldsType = ChangedFieldsTypeName(cl); @@ -478,7 +478,7 @@ return; return body.AddStatements(ParseStatement(code)); } - private BlockSyntax DeserializeChangesPrologue(GClass cl) + private static BlockSyntax DeserializeChangesPrologue(GClass cl) { return Block(ParseStatement($@" base.DeserializeChangesCore(reader, commitedAt); @@ -487,12 +487,12 @@ var changed = reader.Read<{ChangedFieldsTypeName(cl)}>(); ")); } - private BlockSyntax ApplyDeserializeChangesEpilogue(BlockSyntax body, GClass cl) + private static BlockSyntax ApplyDeserializeChangesEpilogue(BlockSyntax body, GClass cl) { return body.AddStatements(ParseStatement("OnFieldsDeserialized(changed);")); } - - BlockSyntax ApplyDeserializeField(BlockSyntax body, GClass cl, GProperty prop, string serverType, bool isObject) + + static BlockSyntax ApplyDeserializeField(BlockSyntax body, GClass cl, GProperty prop, string serverType, bool isObject) { var changedFieldsType = ChangedFieldsTypeName(cl); var code = ""; @@ -514,7 +514,7 @@ var changed = reader.Read<{ChangedFieldsTypeName(cl)}>(); return body.AddStatements(ParseStatement(code)); } - ClassDeclarationSyntax WithGetPropertyForAnimation(ClassDeclarationSyntax cl, BlockSyntax body) + static ClassDeclarationSyntax WithGetPropertyForAnimation(ClassDeclarationSyntax cl, BlockSyntax body) { if (body.Statements.Count == 0) return cl; @@ -526,8 +526,8 @@ var changed = reader.Read<{ChangedFieldsTypeName(cl)}>(); return cl.AddMembers(method); } - - ClassDeclarationSyntax WithGetCompositionProperty(ClassDeclarationSyntax cl, BlockSyntax body) + + static ClassDeclarationSyntax WithGetCompositionProperty(ClassDeclarationSyntax cl, BlockSyntax body) { if (body.Statements.Count == 0) return cl; diff --git a/tests/Avalonia.Base.UnitTests/RenderTests_Culling.cs b/tests/Avalonia.Base.UnitTests/RenderTests_Culling.cs index 509d2451a9..d17302808d 100644 --- a/tests/Avalonia.Base.UnitTests/RenderTests_Culling.cs +++ b/tests/Avalonia.Base.UnitTests/RenderTests_Culling.cs @@ -171,7 +171,7 @@ namespace Avalonia.Base.UnitTests } } - private void Render(IControl control) + private static void Render(IControl control) { var ctx = CreateDrawingContext(); control.Measure(Size.Infinity); diff --git a/tests/Avalonia.Base.UnitTests/Rendering/DeferredRendererTests.cs b/tests/Avalonia.Base.UnitTests/Rendering/DeferredRendererTests.cs index 7f977103ce..df44575f68 100644 --- a/tests/Avalonia.Base.UnitTests/Rendering/DeferredRendererTests.cs +++ b/tests/Avalonia.Base.UnitTests/Rendering/DeferredRendererTests.cs @@ -726,7 +726,7 @@ namespace Avalonia.Base.UnitTests.Rendering } } - private DeferredRenderer CreateTargetAndRunFrame( + private static DeferredRenderer CreateTargetAndRunFrame( TestRoot root, Mock timer = null, ISceneBuilder sceneBuilder = null, @@ -750,25 +750,25 @@ namespace Avalonia.Base.UnitTests.Rendering return Mock.Get(renderer.Layers[layerRoot].Bitmap.Item.CreateDrawingContext(null)); } - private void IgnoreFirstFrame(IRenderLoopTask task, Mock sceneBuilder) + private static void IgnoreFirstFrame(IRenderLoopTask task, Mock sceneBuilder) { RunFrame(task); sceneBuilder.Invocations.Clear(); } - private void RunFrame(IRenderLoopTask task) + private static void RunFrame(IRenderLoopTask task) { task.Update(TimeSpan.Zero); task.Render(); } - private IRenderTargetBitmapImpl CreateLayer() + private static IRenderTargetBitmapImpl CreateLayer() { return Mock.Of(x => x.CreateDrawingContext(It.IsAny()) == Mock.Of()); } - private Mock MockSceneBuilder(IRenderRoot root) + private static Mock MockSceneBuilder(IRenderRoot root) { var result = new Mock(); result.Setup(x => x.UpdateAll(It.IsAny())) diff --git a/tests/Avalonia.Controls.UnitTests/AutoCompleteBoxTests.cs b/tests/Avalonia.Controls.UnitTests/AutoCompleteBoxTests.cs index c8bd289e54..f97b69c752 100644 --- a/tests/Avalonia.Controls.UnitTests/AutoCompleteBoxTests.cs +++ b/tests/Avalonia.Controls.UnitTests/AutoCompleteBoxTests.cs @@ -455,7 +455,7 @@ namespace Avalonia.Controls.UnitTests /// Creates a large list of strings for AutoCompleteBox testing. /// /// Returns a new List of string values. - private IList CreateSimpleStringArray() + private static IList CreateSimpleStringArray() { return new List { diff --git a/tests/Avalonia.Controls.UnitTests/ButtonTests.cs b/tests/Avalonia.Controls.UnitTests/ButtonTests.cs index 42bdffd908..68f46824c1 100644 --- a/tests/Avalonia.Controls.UnitTests/ButtonTests.cs +++ b/tests/Avalonia.Controls.UnitTests/ButtonTests.cs @@ -379,7 +379,7 @@ namespace Avalonia.Controls.UnitTests } } - private KeyEventArgs CreateKeyDownEvent(Key key, IInteractive source = null) + private static KeyEventArgs CreateKeyDownEvent(Key key, IInteractive source = null) { return new KeyEventArgs { RoutedEvent = InputElement.KeyDownEvent, Key = key, Source = source }; } diff --git a/tests/Avalonia.Controls.UnitTests/CalendarDatePickerTests.cs b/tests/Avalonia.Controls.UnitTests/CalendarDatePickerTests.cs index a73e14939d..c3acf31caa 100644 --- a/tests/Avalonia.Controls.UnitTests/CalendarDatePickerTests.cs +++ b/tests/Avalonia.Controls.UnitTests/CalendarDatePickerTests.cs @@ -76,7 +76,7 @@ namespace Avalonia.Controls.UnitTests private static TestServices Services => TestServices.MockThreadingInterface.With( standardCursorFactory: Mock.Of()); - private CalendarDatePicker CreateControl() + private static CalendarDatePicker CreateControl() { var datePicker = new CalendarDatePicker @@ -88,7 +88,7 @@ namespace Avalonia.Controls.UnitTests return datePicker; } - private IControlTemplate CreateTemplate() + private static IControlTemplate CreateTemplate() { return new FuncControlTemplate((control, scope) => { diff --git a/tests/Avalonia.Controls.UnitTests/GridTests.cs b/tests/Avalonia.Controls.UnitTests/GridTests.cs index b2d00929d8..d372bb2af4 100644 --- a/tests/Avalonia.Controls.UnitTests/GridTests.cs +++ b/tests/Avalonia.Controls.UnitTests/GridTests.cs @@ -16,13 +16,13 @@ namespace Avalonia.Controls.UnitTests this.output = output; } - private Grid CreateGrid(params (string name, GridLength width)[] columns) + private static Grid CreateGrid(params (string name, GridLength width)[] columns) { return CreateGrid(columns.Select(c => (c.name, c.width, ColumnDefinition.MinWidthProperty.GetDefaultValue(typeof(ColumnDefinition)))).ToArray()); } - private Grid CreateGrid(params (string name, GridLength width, double minWidth)[] columns) + private static Grid CreateGrid(params (string name, GridLength width, double minWidth)[] columns) { return CreateGrid(columns.Select(c => (c.name, c.width, c.minWidth, ColumnDefinition.MaxWidthProperty.GetDefaultValue(typeof(ColumnDefinition)))).ToArray()); diff --git a/tests/Avalonia.Controls.UnitTests/ListBoxTests.cs b/tests/Avalonia.Controls.UnitTests/ListBoxTests.cs index 203df0aded..e65a3b62ee 100644 --- a/tests/Avalonia.Controls.UnitTests/ListBoxTests.cs +++ b/tests/Avalonia.Controls.UnitTests/ListBoxTests.cs @@ -590,7 +590,7 @@ namespace Avalonia.Controls.UnitTests Assert.Equal(new[] { "Bar" }, target.Selection.SelectedItems); } - private FuncControlTemplate ListBoxTemplate() + private static FuncControlTemplate ListBoxTemplate() { return new FuncControlTemplate((parent, scope) => new ScrollViewer @@ -643,7 +643,7 @@ namespace Avalonia.Controls.UnitTests }); } - private void Prepare(ListBox target) + private static void Prepare(ListBox target) { // The ListBox needs to be part of a rooted visual tree. var root = new TestRoot(); @@ -718,7 +718,7 @@ namespace Avalonia.Controls.UnitTests Assert.True(DataValidationErrors.GetErrors(target).SequenceEqual(new[] { exception })); } - private void RaiseKeyEvent(ListBox listBox, Key key, KeyModifiers inputModifiers = 0) + private static void RaiseKeyEvent(ListBox listBox, Key key, KeyModifiers inputModifiers = 0) { listBox.RaiseEvent(new KeyEventArgs { diff --git a/tests/Avalonia.Controls.UnitTests/MaskedTextBoxTests.cs b/tests/Avalonia.Controls.UnitTests/MaskedTextBoxTests.cs index d1fa522206..22b4e0e87d 100644 --- a/tests/Avalonia.Controls.UnitTests/MaskedTextBoxTests.cs +++ b/tests/Avalonia.Controls.UnitTests/MaskedTextBoxTests.cs @@ -118,7 +118,7 @@ namespace Avalonia.Controls.UnitTests target.ApplyTemplate(); target.CaretIndex = 3; target.Measure(Size.Infinity); - + RaiseKeyEvent(target, Key.Right, 0); Assert.Equal(4, target.CaretIndex); @@ -885,7 +885,7 @@ namespace Avalonia.Controls.UnitTests textShaperImpl: new MockTextShaperImpl(), fontManagerImpl: new MockFontManagerImpl()); - private IControlTemplate CreateTemplate() + private static IControlTemplate CreateTemplate() { return new FuncControlTemplate((control, scope) => new TextPresenter @@ -908,7 +908,7 @@ namespace Avalonia.Controls.UnitTests }.RegisterInNameScope(scope)); } - private void RaiseKeyEvent(MaskedTextBox textBox, Key key, KeyModifiers inputModifiers) + private static void RaiseKeyEvent(MaskedTextBox textBox, Key key, KeyModifiers inputModifiers) { textBox.RaiseEvent(new KeyEventArgs { diff --git a/tests/Avalonia.Controls.UnitTests/NumericUpDownTests.cs b/tests/Avalonia.Controls.UnitTests/NumericUpDownTests.cs index dc47b19299..bdb94707de 100644 --- a/tests/Avalonia.Controls.UnitTests/NumericUpDownTests.cs +++ b/tests/Avalonia.Controls.UnitTests/NumericUpDownTests.cs @@ -75,7 +75,7 @@ namespace Avalonia.Controls.UnitTests .OfType() .First(); } - private IControlTemplate CreateTemplate() + private static IControlTemplate CreateTemplate() { return new FuncControlTemplate((control, scope) => { diff --git a/tests/Avalonia.Controls.UnitTests/Primitives/PopupTests.cs b/tests/Avalonia.Controls.UnitTests/Primitives/PopupTests.cs index 100de7f4f6..68c9fba8b9 100644 --- a/tests/Avalonia.Controls.UnitTests/Primitives/PopupTests.cs +++ b/tests/Avalonia.Controls.UnitTests/Primitives/PopupTests.cs @@ -1074,7 +1074,7 @@ namespace Avalonia.Controls.UnitTests.Primitives } - private PointerPressedEventArgs CreatePointerPressedEventArgs(Window source, Point p) + private static PointerPressedEventArgs CreatePointerPressedEventArgs(Window source, Point p) { var pointer = new Pointer(Pointer.GetNextFreeId(), PointerType.Mouse, true); return new PointerPressedEventArgs( diff --git a/tests/Avalonia.Controls.UnitTests/TextBoxTests.cs b/tests/Avalonia.Controls.UnitTests/TextBoxTests.cs index 23a330c96f..d550d7c5f9 100644 --- a/tests/Avalonia.Controls.UnitTests/TextBoxTests.cs +++ b/tests/Avalonia.Controls.UnitTests/TextBoxTests.cs @@ -578,7 +578,7 @@ namespace Avalonia.Controls.UnitTests target1.Focus(); Assert.True(target1.IsFocused); - + RaiseKeyEvent(target1, key, KeyModifiers.None); } } @@ -747,7 +747,7 @@ namespace Avalonia.Controls.UnitTests var clipboard = AvaloniaLocator.CurrentMutable.GetService(); clipboard.SetTextAsync(textInput).GetAwaiter().GetResult(); - + RaiseKeyEvent(target, Key.V, KeyModifiers.Control); clipboard.ClearAsync().GetAwaiter().GetResult(); } @@ -904,7 +904,7 @@ namespace Avalonia.Controls.UnitTests }.RegisterInNameScope(scope)); } - private void RaiseKeyEvent(TextBox textBox, Key key, KeyModifiers inputModifiers) + private static void RaiseKeyEvent(TextBox textBox, Key key, KeyModifiers inputModifiers) { textBox.RaiseEvent(new KeyEventArgs { @@ -914,7 +914,7 @@ namespace Avalonia.Controls.UnitTests }); } - private void RaiseTextEvent(TextBox textBox, string text) + private static void RaiseTextEvent(TextBox textBox, string text) { textBox.RaiseEvent(new TextInputEventArgs { diff --git a/tests/Avalonia.Controls.UnitTests/TreeViewTests.cs b/tests/Avalonia.Controls.UnitTests/TreeViewTests.cs index fb21acad9e..81d76f8ca5 100644 --- a/tests/Avalonia.Controls.UnitTests/TreeViewTests.cs +++ b/tests/Avalonia.Controls.UnitTests/TreeViewTests.cs @@ -1247,7 +1247,7 @@ namespace Avalonia.Controls.UnitTests } } - private TreeViewItem GetItem(TreeView target, params int[] indexes) + private static TreeViewItem GetItem(TreeView target, params int[] indexes) { var c = (ItemsControl)target; diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs index 215ae4d54f..418349e390 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/CompiledBindingExtensionTests.cs @@ -1568,8 +1568,8 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions Assert.Equal(typeof(string), node.Property.PropertyType); } } - - void Throws(string type, Action cb) + + static void Throws(string type, Action cb) { try { @@ -1583,8 +1583,8 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions throw new Exception("Expected " + type); } - void ThrowsXamlParseException(Action cb) => Throws("XamlParseException", cb); - void ThrowsXamlTransformException(Action cb) => Throws("XamlTransformException", cb); + static void ThrowsXamlParseException(Action cb) => Throws("XamlParseException", cb); + static void ThrowsXamlTransformException(Action cb) => Throws("XamlTransformException", cb); static void PerformClick(Button button) @@ -1592,7 +1592,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions button.RaiseEvent(new KeyEventArgs { RoutedEvent = InputElement.KeyDownEvent, - Key = Input.Key.Enter, + Key = Key.Enter, }); } } diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs index 4f323d8b2c..ccc460d900 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/DynamicResourceExtensionTests.cs @@ -221,7 +221,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions [Fact] public void DynamicResource_From_Style_Can_Be_Assigned_To_Setter() { - using (StyledWindow()) + using (DynamicResourceExtensionTests.StyledWindow()) { var xaml = @" "; - using (StyledWindow(assets: ("test:style.xaml", styleXaml))) + using (DynamicResourceExtensionTests.StyledWindow(assets: ("test:style.xaml", styleXaml))) { var xaml = @" "; - using (StyledWindow(assets: ("test:style.xaml", styleXaml))) + using (DynamicResourceExtensionTests.StyledWindow(assets: ("test:style.xaml", styleXaml))) { var xaml = @" "; - using (StyledWindow( + using (DynamicResourceExtensionTests.StyledWindow( ("test:style1.xaml", style1Xaml), ("test:style2.xaml", style2Xaml))) { @@ -606,7 +606,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions "; - using (StyledWindow( + using (DynamicResourceExtensionTests.StyledWindow( ("test:style1.xaml", style1Xaml), ("test:style2.xaml", style2Xaml))) { @@ -631,7 +631,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions [Fact] public void Control_Property_Is_Updated_When_Parent_Is_Changed() { - using (StyledWindow()) + using (DynamicResourceExtensionTests.StyledWindow()) { var xaml = @" new Styles { - DynamicResourceExtensionTests.WindowStyle(), + WindowStyle(), }); return UnitTestApplication.Start(services); diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/StaticResourceExtensionTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/StaticResourceExtensionTests.cs index 625785a0b7..94e1e013d2 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/StaticResourceExtensionTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/MarkupExtensions/StaticResourceExtensionTests.cs @@ -374,7 +374,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.MarkupExtensions [Fact] public void StaticResource_Can_Be_Assigned_To_Converter() { - using (StyledWindow()) + using (StaticResourceExtensionTests.StyledWindow()) { var xaml = @" new Styles { - StaticResourceExtensionTests.WindowStyle(), + WindowStyle(), }); return UnitTestApplication.Start(services); diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/ResourceDictionaryTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/ResourceDictionaryTests.cs index 05e69adae0..030fa669b8 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/ResourceDictionaryTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/ResourceDictionaryTests.cs @@ -15,7 +15,7 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml [Fact] public void StaticResource_Works_In_ResourceDictionary() { - using (StyledWindow()) + using (ResourceDictionaryTests.StyledWindow()) { var xaml = @" "; - using (StyledWindow(assets: ("test:dict.xaml", dictionaryXaml))) + using (ResourceDictionaryTests.StyledWindow(assets: ("test:dict.xaml", dictionaryXaml))) { var xaml = @" AvaloniaRuntimeXamlLoader + AssertThrows(() => AvaloniaRuntimeXamlLoader .Load(@" Date: Wed, 19 Oct 2022 09:58:58 +0200 Subject: [PATCH 23/38] fix: Apply rule CA1822 --- src/Avalonia.Base/Media/PathMarkupParser.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Avalonia.Base/Media/PathMarkupParser.cs b/src/Avalonia.Base/Media/PathMarkupParser.cs index 30c5206125..41f97e5d1b 100644 --- a/src/Avalonia.Base/Media/PathMarkupParser.cs +++ b/src/Avalonia.Base/Media/PathMarkupParser.cs @@ -519,7 +519,7 @@ namespace Avalonia.Media return span.Slice(i); } - private bool ReadBool(ref ReadOnlySpan span) + private static bool ReadBool(ref ReadOnlySpan span) { span = SkipWhitespace(span); @@ -543,7 +543,7 @@ namespace Avalonia.Media } } - private double ReadDouble(ref ReadOnlySpan span) + private static double ReadDouble(ref ReadOnlySpan span) { if (!ReadArgument(ref span, out var doubleValue)) { @@ -553,7 +553,7 @@ namespace Avalonia.Media return double.Parse(doubleValue.ToString(), CultureInfo.InvariantCulture); } - private Size ReadSize(ref ReadOnlySpan span) + private static Size ReadSize(ref ReadOnlySpan span) { var width = ReadDouble(ref span); span = ReadSeparator(span); @@ -561,7 +561,7 @@ namespace Avalonia.Media return new Size(width, height); } - private Point ReadPoint(ref ReadOnlySpan span) + private static Point ReadPoint(ref ReadOnlySpan span) { var x = ReadDouble(ref span); span = ReadSeparator(span); @@ -569,7 +569,7 @@ namespace Avalonia.Media return new Point(x, y); } - private Point ReadRelativePoint(ref ReadOnlySpan span, Point origin) + private static Point ReadRelativePoint(ref ReadOnlySpan span, Point origin) { var x = ReadDouble(ref span); span = ReadSeparator(span); @@ -577,7 +577,7 @@ namespace Avalonia.Media return new Point(origin.X + x, origin.Y + y); } - private bool ReadCommand(ref ReadOnlySpan span, out Command command, out bool relative) + private static bool ReadCommand(ref ReadOnlySpan span, out Command command, out bool relative) { span = SkipWhitespace(span); if (span.IsEmpty) From ac2f0f88d6156278dc2de28c63a461a7aaed0d4e Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Thu, 3 Nov 2022 14:48:39 +0100 Subject: [PATCH 24/38] fix: Rule CA1822 only private and internal --- .editorconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/.editorconfig b/.editorconfig index c3989db7f4..488453596d 100644 --- a/.editorconfig +++ b/.editorconfig @@ -145,6 +145,7 @@ dotnet_diagnostic.CA1820.severity = warning dotnet_diagnostic.CA1821.severity = warning # CA1822: Mark members as static dotnet_diagnostic.CA1822.severity = warning +dotnet_code_quality.CA1822.api_surface = private, internal # CA1825: Avoid zero-length array allocations dotnet_diagnostic.CA1825.severity = warning #CA1847: Use string.Contains(char) instead of string.Contains(string) with single characters From 1e69527ea62b4f97c96fa1d0d2f7fc47d8db57dc Mon Sep 17 00:00:00 2001 From: Giuseppe Lippolis Date: Tue, 15 Nov 2022 10:12:48 +0100 Subject: [PATCH 25/38] fix: address review --- .editorconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.editorconfig b/.editorconfig index 488453596d..7c0301a124 100644 --- a/.editorconfig +++ b/.editorconfig @@ -144,7 +144,7 @@ dotnet_diagnostic.CA1820.severity = warning # CA1821: Remove empty finalizers dotnet_diagnostic.CA1821.severity = warning # CA1822: Mark members as static -dotnet_diagnostic.CA1822.severity = warning +dotnet_diagnostic.CA1822.severity = suggestion dotnet_code_quality.CA1822.api_surface = private, internal # CA1825: Avoid zero-length array allocations dotnet_diagnostic.CA1825.severity = warning From f4898667345648ac27b08a8e77626fcda6971d0f Mon Sep 17 00:00:00 2001 From: zhouzj Date: Thu, 1 Dec 2022 16:28:34 +0800 Subject: [PATCH 26/38] Replace ContentControl to ContentPresenter --- .../Controls/CalendarButton.xaml | 16 ++++++++-------- .../Controls/CalendarButton.xaml | 18 +++++++++--------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/Avalonia.Themes.Fluent/Controls/CalendarButton.xaml b/src/Avalonia.Themes.Fluent/Controls/CalendarButton.xaml index 06b6cf30c2..76b51ca819 100644 --- a/src/Avalonia.Themes.Fluent/Controls/CalendarButton.xaml +++ b/src/Avalonia.Themes.Fluent/Controls/CalendarButton.xaml @@ -35,13 +35,13 @@ - + @@ -70,7 +70,7 @@ - diff --git a/src/Avalonia.Themes.Simple/Controls/CalendarButton.xaml b/src/Avalonia.Themes.Simple/Controls/CalendarButton.xaml index 59fb24663f..9e13e1e996 100644 --- a/src/Avalonia.Themes.Simple/Controls/CalendarButton.xaml +++ b/src/Avalonia.Themes.Simple/Controls/CalendarButton.xaml @@ -32,14 +32,14 @@ Opacity="0.5" /> - + - From 4f472a10d680ccad8dd288b27c2507c72e964e59 Mon Sep 17 00:00:00 2001 From: zhouzj Date: Thu, 1 Dec 2022 18:04:22 +0800 Subject: [PATCH 27/38] if the slider is disabled while sliding, prevent the track sliding --- src/Avalonia.Controls/Slider.cs | 20 ++++++---- .../Controls/Slider.xaml | 39 +++++++++---------- 2 files changed, 32 insertions(+), 27 deletions(-) diff --git a/src/Avalonia.Controls/Slider.cs b/src/Avalonia.Controls/Slider.cs index be87705b54..4b23717209 100644 --- a/src/Avalonia.Controls/Slider.cs +++ b/src/Avalonia.Controls/Slider.cs @@ -190,7 +190,7 @@ namespace Avalonia.Controls _increaseButtonSubscription?.Dispose(); _increaseButtonReleaseDispose?.Dispose(); _pointerMovedDispose?.Dispose(); - + _decreaseButton = e.NameScope.Find