Browse Source

fix: Addreaa review

pull/9189/head
Giuseppe Lippolis 3 years ago
parent
commit
9e1ff3e3be
  1. 6
      src/Avalonia.Base/Animation/Animators/GradientBrushAnimator.cs
  2. 6
      src/Avalonia.Base/Animation/KeySpline.cs
  3. 18
      src/Avalonia.Base/Controls/Classes.cs
  4. 2
      src/Avalonia.Base/Data/Core/ExpressionNode.cs
  5. 6
      src/Avalonia.Base/Data/Core/Parsers/ExpressionVisitorNodeBuilder.cs
  6. 2
      src/Avalonia.Base/Data/Core/Plugins/DataAnnotationsValidationPlugin.cs
  7. 2
      src/Avalonia.Base/Data/Core/Plugins/IndeiValidationPlugin.cs
  8. 4
      src/Avalonia.Base/Data/Core/Plugins/TaskStreamPlugin.cs
  9. 12
      src/Avalonia.Base/Input/DragDropDevice.cs
  10. 2
      src/Avalonia.Base/Input/KeyGesture.cs
  11. 4
      src/Avalonia.Base/Input/KeyboardDevice.cs
  12. 11
      src/Avalonia.Base/Input/MouseDevice.cs
  13. 2
      src/Avalonia.Base/Input/PenDevice.cs
  14. 4
      src/Avalonia.Base/Input/Pointer.cs
  15. 6
      src/Avalonia.Base/Input/TouchDevice.cs
  16. 8
      src/Avalonia.Base/Layout/AttachedLayout.cs
  17. 8
      src/Avalonia.Base/Layout/StackLayout.cs
  18. 6
      src/Avalonia.Base/Layout/UniformGridLayout.cs
  19. 8
      src/Avalonia.Base/Platform/AssetLoader.cs
  20. 4
      src/Avalonia.Base/Rendering/Composition/CompositingRenderer.cs
  21. 6
      src/Avalonia.Base/Rendering/Composition/CompositionTarget.cs
  22. 6
      src/Avalonia.Controls/Automation/Peers/ComboBoxAutomationPeer.cs
  23. 8
      src/Avalonia.Controls/Calendar/CalendarBlackoutDatesCollection.cs
  24. 9
      src/Avalonia.Controls/Calendar/SelectedDatesCollection.cs
  25. 14
      src/Avalonia.Controls/ComboBox.cs
  26. 4
      src/Avalonia.Controls/DateTimePickers/DateTimePickerPanel.cs
  27. 10
      src/Avalonia.Controls/Grid.cs
  28. 14
      src/Avalonia.Controls/GridSplitter.cs
  29. 4
      src/Avalonia.Controls/Platform/InProcessDragSource.cs
  30. 8
      src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs
  31. 8
      src/Avalonia.Controls/Primitives/AdornerLayer.cs
  32. 6
      src/Avalonia.Controls/Primitives/Popup.cs
  33. 4
      src/Avalonia.Controls/Repeater/RecyclePool.cs
  34. 6
      src/Avalonia.Controls/Repeater/RecyclingElementFactory.cs
  35. 9
      src/Avalonia.Controls/SplitView.cs
  36. 9
      src/Avalonia.Controls/TextBox.cs
  37. 2
      src/Avalonia.Controls/TopLevel.cs
  38. 6
      src/Avalonia.Controls/TreeView.cs
  39. 2
      src/Avalonia.Diagnostics/Diagnostics/Screenshots/FilePickerHandler.cs
  40. 16
      src/Avalonia.Diagnostics/Diagnostics/ViewModels/ControlDetailsViewModel.cs
  41. 8
      src/Avalonia.FreeDesktop/LinuxMountedVolumeInfoListener.cs
  42. 2
      src/Avalonia.Native/AvaloniaNativeDragSource.cs
  43. 2
      src/Avalonia.Native/AvaloniaNativeMenuExporter.cs
  44. 3
      src/Avalonia.Native/IAvnMenu.cs
  45. 4
      src/Avalonia.OpenGL/Controls/OpenGlControlBase.cs
  46. 4
      src/Avalonia.ReactiveUI/AvaloniaActivationForViewFetcher.cs
  47. 4
      src/Avalonia.X11/X11IconLoader.cs
  48. 7
      src/Avalonia.X11/X11Platform.cs
  49. 3
      src/Avalonia.X11/X11Window.Ime.cs
  50. 6
      src/Avalonia.X11/X11Window.cs
  51. 2
      src/Avalonia.X11/XI2Manager.cs
  52. 2
      src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs
  53. 2
      src/Markup/Avalonia.Markup.Xaml/Converters/IconTypeConverter.cs
  54. 4
      src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/DynamicResourceExtension.cs
  55. 4
      src/Markup/Avalonia.Markup.Xaml/Parsers/PropertyParser.cs
  56. 8
      src/Markup/Avalonia.Markup/Markup/Parsers/Nodes/StringIndexerNode.cs
  57. 4
      src/Skia/Avalonia.Skia/DrawingContextImpl.cs
  58. 6
      src/Windows/Avalonia.Win32/ClipboardImpl.cs
  59. 2
      src/Windows/Avalonia.Win32/CursorFactory.cs
  60. 8
      src/Windows/Avalonia.Win32/DataObject.cs
  61. 2
      src/tools/DevGenerators/CompositionGenerator/Generator.cs

6
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),

6
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.</returns>
public bool IsValid()
{
return KeySpline.IsValidXValue(_controlPointX1) && KeySpline.IsValidXValue(_controlPointX2);
return IsValidXValue(_controlPointX1) && IsValidXValue(_controlPointX2);
}
/// <summary>

18
src/Avalonia.Base/Controls/Classes.cs

@ -37,7 +37,7 @@ namespace Avalonia.Controls
/// <param name="items">The initial items.</param>
public Classes(params string[] items)
: base(items)
{
{
}
/// <summary>
@ -63,7 +63,7 @@ namespace Avalonia.Controls
/// </remarks>
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
/// </remarks>
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
/// </remarks>
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<string>();
@ -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)

2
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)

6
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<AvaloniaProperty>(node.Arguments[0]);
var property = GetArgumentExpressionValue<AvaloniaProperty>(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<MethodInfo>(node.Object!).Name, _enableDataValidation));
Nodes.Add(new PropertyAccessorNode(GetArgumentExpressionValue<MethodInfo>(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);

2
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));
}

2
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);
}

4
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<object?>();
task.ContinueWith(
x => TaskStreamPlugin.HandleCompleted(task).Subscribe(subject),
x => HandleCompleted(task).Subscribe(subject),
TaskScheduler.FromCurrentSynchronizationContext())
.ConfigureAwait(false);
return subject;

12
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
{

2
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)

4
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;
}

11
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());
}

2
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;
}

4
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<IInputElement>())
{
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<IInputElement>();
}

6
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));
}
}

8
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)

8
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;
}
}

6
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();

8
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())
{

4
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;

6
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;

6
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!));
}
}

8
src/Avalonia.Controls/Calendar/CalendarBlackoutDatesCollection.cs

@ -122,7 +122,7 @@ namespace Avalonia.Controls.Primitives
/// </remarks>
protected override void ClearItems()
{
CalendarBlackoutDatesCollection.EnsureValidThread();
EnsureValidThread();
base.ClearItems();
_owner.UpdateMonths();
@ -140,7 +140,7 @@ namespace Avalonia.Controls.Primitives
/// </remarks>
protected override void InsertItem(int index, CalendarDateRange item)
{
CalendarBlackoutDatesCollection.EnsureValidThread();
EnsureValidThread();
if (!IsValid(item))
{
@ -162,7 +162,7 @@ namespace Avalonia.Controls.Primitives
/// </remarks>
protected override void RemoveItem(int index)
{
CalendarBlackoutDatesCollection.EnsureValidThread();
EnsureValidThread();
base.RemoveItem(index);
_owner.UpdateMonths();
@ -182,7 +182,7 @@ namespace Avalonia.Controls.Primitives
/// </remarks>
protected override void SetItem(int index, CalendarDateRange item)
{
CalendarBlackoutDatesCollection.EnsureValidThread();
EnsureValidThread();
if (!IsValid(item))
{

9
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
/// </remarks>
protected override void ClearItems()
{
SelectedDatesCollection.EnsureValidThread();
EnsureValidThread();
Collection<DateTime> addedItems = new Collection<DateTime>();
Collection<DateTime> removedItems = new Collection<DateTime>();
@ -170,7 +169,7 @@ namespace Avalonia.Controls.Primitives
/// </remarks>
protected override void InsertItem(int index, DateTime item)
{
SelectedDatesCollection.EnsureValidThread();
EnsureValidThread();
if (!Contains(item))
{
@ -233,7 +232,7 @@ namespace Avalonia.Controls.Primitives
/// </remarks>
protected override void RemoveItem(int index)
{
SelectedDatesCollection.EnsureValidThread();
EnsureValidThread();
if (index >= Count)
{
@ -284,7 +283,7 @@ namespace Avalonia.Controls.Primitives
/// </remarks>
protected override void SetItem(int index, DateTime item)
{
SelectedDatesCollection.EnsureValidThread();
EnsureValidThread();
if (!Contains(item))
{

14
src/Avalonia.Controls/ComboBox.cs

@ -96,7 +96,7 @@ namespace Avalonia.Controls
ItemsPanelProperty.OverrideDefaultValue<ComboBox>(DefaultPanel);
FocusableProperty.OverrideDefaultValue<ComboBox>(true);
SelectedItemProperty.Changed.AddClassHandler<ComboBox>((x, e) => x.SelectedItemChanged(e));
KeyDownEvent.AddClassHandler<ComboBox>((x, e) => x.OnKeyDown(e), Interactivity.RoutingStrategies.Tunnel);
KeyDownEvent.AddClassHandler<ComboBox>((x, e) => x.OnKeyDown(e), RoutingStrategies.Tunnel);
IsTextSearchEnabledProperty.OverrideDefaultValue<ComboBox>(true);
IsDropDownOpenProperty.Changed.AddClassHandler<ComboBox>((x, e) => x.DropdownChanged(e));
}
@ -178,8 +178,8 @@ namespace Avalonia.Controls
{
return new ItemContainerGenerator<ComboBoxItem>(
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();
}

4
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;

10
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
/// <param name="start">Starting index of the range.</param>
/// <param name="count">Number of definitions included in the range.</param>
/// <returns>Length type for given range.</returns>
private LayoutTimeSizeType GetLengthTypeForRange(
private static LayoutTimeSizeType GetLengthTypeForRange(
IReadOnlyList<DefinitionBase> definitions,
int start,
int count)
@ -1721,7 +1721,7 @@ namespace Avalonia.Controls
/// </summary>
/// <param name="definitions">Array of definitions to use for calculations.</param>
/// <returns>Desired size.</returns>
private double CalculateDesiredSize(
private static double CalculateDesiredSize(
IReadOnlyList<DefinitionBase> definitions)
{
double desiredSize = 0;
@ -2281,7 +2281,7 @@ namespace Avalonia.Controls
/// <param name="start">Start of the range.</param>
/// <param name="count">Number of items in the range.</param>
/// <returns>Final size.</returns>
private double GetFinalSizeForRange(
private static double GetFinalSizeForRange(
IReadOnlyList<DefinitionBase> definitions,
int start,
int count)

14
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
/// </summary>
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;

4
src/Avalonia.Controls/Platform/InProcessDragSource.cs

@ -64,7 +64,7 @@ namespace Avalonia.Platform
var tl = root.GetSelfAndVisualAncestors().OfType<TopLevel>().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;

8
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;
}

8
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

6
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)

4
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.

6
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;

9
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<SplitViewDisplayMode>());
var newState = SplitView.GetPseudoClass(e.GetNewValue<SplitViewDisplayMode>());
var oldState = GetPseudoClass(e.GetOldValue<SplitViewDisplayMode>());
var newState = GetPseudoClass(e.GetNewValue<SplitViewDisplayMode>());
PseudoClasses.Remove($":{oldState}");
PseudoClasses.Add($":{newState}");

9
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)
{

2
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;
}

6
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)

2
src/Avalonia.Diagnostics/Diagnostics/Screenshots/FilePickerHandler.cs

@ -61,7 +61,7 @@ namespace Avalonia.Diagnostics.Screenshots
protected async override Task<Stream?> 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,

16
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<PropertyViewModel> GetAvaloniaProperties(object o)
private static IEnumerable<PropertyViewModel> GetAvaloniaProperties(object o)
{
if (o is AvaloniaObject ao)
{
@ -268,7 +268,7 @@ namespace Avalonia.Diagnostics.ViewModels
}
}
private IEnumerable<PropertyViewModel> GetClrProperties(object o, bool showImplementedInterfaces)
private static IEnumerable<PropertyViewModel> GetClrProperties(object o, bool showImplementedInterfaces)
{
foreach (var p in GetClrProperties(o, o.GetType()))
{
@ -287,7 +287,7 @@ namespace Avalonia.Diagnostics.ViewModels
}
}
private IEnumerable<PropertyViewModel> GetClrProperties(object o, Type t)
private static IEnumerable<PropertyViewModel> 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)
{

8
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<FileInfo>();
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

2
src/Avalonia.Native/AvaloniaNativeDragSource.cs

@ -48,7 +48,7 @@ namespace Avalonia.Native
public Task<DragDropEffects> 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();

2
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);
}

3
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);

4
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)
{

4
src/Avalonia.ReactiveUI/AvaloniaActivationForViewFetcher.cs

@ -26,8 +26,8 @@ namespace Avalonia.ReactiveUI
public IObservable<bool> 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);
}
/// <summary>

4
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)
{

7
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<IMountedVolumeInfoProvider>().ToConstant(new LinuxMountedVolumeInfoProvider())
.Bind<IPlatformLifetimeEventsImpl>().ToConstant(new X11PlatformLifetimeEvents(this));
X11Screens = Avalonia.X11.X11Screens.Init(this);
X11Screens = X11.X11Screens.Init(this);
Screens = new X11Screens(X11Screens);
if (Info.XInputVersion != null)
{

3
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);

6
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);
}

2
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);
}
}

2
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;

2
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;

4
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);
}

4
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

8
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);
}

4
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;
}

6
src/Windows/Avalonia.Win32/ClipboardImpl.cs

@ -31,7 +31,7 @@ namespace Avalonia.Win32
public async Task<string> 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();
}

2
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

8
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<byte> data)
private static unsafe uint WriteBytesToHGlobal(ref IntPtr hGlobal, ReadOnlySpan<byte> data)
{
int required = data.Length;
if (hGlobal == IntPtr.Zero)
@ -326,7 +326,7 @@ namespace Avalonia.Win32
}
}
private uint WriteFileListToHGlobal(ref IntPtr hGlobal, IEnumerable<string> files)
private static uint WriteFileListToHGlobal(ref IntPtr hGlobal, IEnumerable<string> 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)

2
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"),

Loading…
Cancel
Save