diff --git a/.editorconfig b/.editorconfig
index 7995062f9f..ff7ac5d69e 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -140,6 +140,8 @@ dotnet_analyzer_diagnostic.category-Performance.severity = none #error - Uncomme
# CS1591: Missing XML comment for publicly visible type or member
dotnet_diagnostic.CS1591.severity = suggestion
+# CS0162: Remove unreachable code
+dotnet_diagnostic.CS0162.severity = error
# CA1304: Specify CultureInfo
dotnet_diagnostic.CA1304.severity = warning
# CA1802: Use literals where appropriate
diff --git a/src/Avalonia.Base/Media/DashStyle.cs b/src/Avalonia.Base/Media/DashStyle.cs
index 3a30b2d32f..9c30b6f872 100644
--- a/src/Avalonia.Base/Media/DashStyle.cs
+++ b/src/Avalonia.Base/Media/DashStyle.cs
@@ -17,8 +17,8 @@ namespace Avalonia.Media
///
/// Defines the property.
///
- public static readonly StyledProperty> DashesProperty =
- AvaloniaProperty.Register>(nameof(Dashes));
+ public static readonly StyledProperty?> DashesProperty =
+ AvaloniaProperty.Register?>(nameof(Dashes));
///
/// Defines the property.
@@ -83,7 +83,7 @@ namespace Avalonia.Media
///
/// Gets or sets the length of alternating dashes and gaps.
///
- public AvaloniaList Dashes
+ public AvaloniaList? Dashes
{
get => GetValue(DashesProperty);
set => SetValue(DashesProperty, value);
@@ -98,7 +98,7 @@ namespace Avalonia.Media
set => SetValue(OffsetProperty, value);
}
- IReadOnlyList IDashStyle.Dashes => Dashes;
+ IReadOnlyList? IDashStyle.Dashes => Dashes;
///
/// Raised when the dash style changes.
diff --git a/src/Avalonia.Base/Media/IDashStyle.cs b/src/Avalonia.Base/Media/IDashStyle.cs
index 7208216603..b988ad210a 100644
--- a/src/Avalonia.Base/Media/IDashStyle.cs
+++ b/src/Avalonia.Base/Media/IDashStyle.cs
@@ -12,7 +12,7 @@ namespace Avalonia.Media
///
/// Gets or sets the length of alternating dashes and gaps.
///
- IReadOnlyList Dashes { get; }
+ IReadOnlyList? Dashes { get; }
///
/// Gets or sets how far in the dash sequence the stroke will start.
diff --git a/src/Avalonia.Base/Media/Immutable/ImmutableDashStyle.cs b/src/Avalonia.Base/Media/Immutable/ImmutableDashStyle.cs
index 82485c13b0..1f53f06955 100644
--- a/src/Avalonia.Base/Media/Immutable/ImmutableDashStyle.cs
+++ b/src/Avalonia.Base/Media/Immutable/ImmutableDashStyle.cs
@@ -17,7 +17,7 @@ namespace Avalonia.Media.Immutable
///
/// The dashes collection.
/// The dash sequence offset.
- public ImmutableDashStyle(IEnumerable dashes, double offset)
+ public ImmutableDashStyle(IEnumerable? dashes, double offset)
{
_dashes = dashes?.ToArray() ?? Array.Empty();
Offset = offset;
@@ -69,7 +69,7 @@ namespace Avalonia.Media.Immutable
return hashCode;
}
- private static bool SequenceEqual(IReadOnlyList left, IReadOnlyList right)
+ private static bool SequenceEqual(IReadOnlyList left, IReadOnlyList? right)
{
if (ReferenceEquals(left, right))
{
diff --git a/src/Avalonia.Controls/Presenters/TextPresenter.cs b/src/Avalonia.Controls/Presenters/TextPresenter.cs
index 798caf0b15..480a8ee7a7 100644
--- a/src/Avalonia.Controls/Presenters/TextPresenter.cs
+++ b/src/Avalonia.Controls/Presenters/TextPresenter.cs
@@ -109,7 +109,7 @@ namespace Avalonia.Controls.Presenters
static TextPresenter()
{
- AffectsRender(CaretBrushProperty, SelectionBrushProperty);
+ AffectsRender(CaretBrushProperty, SelectionBrushProperty, TextElement.ForegroundProperty);
}
public TextPresenter()
diff --git a/src/Avalonia.Themes.Fluent/Accents/BaseDark.xaml b/src/Avalonia.Themes.Fluent/Accents/BaseDark.xaml
index 89841c92c0..0192fb1b54 100644
--- a/src/Avalonia.Themes.Fluent/Accents/BaseDark.xaml
+++ b/src/Avalonia.Themes.Fluent/Accents/BaseDark.xaml
@@ -36,6 +36,7 @@
+
diff --git a/src/Avalonia.Themes.Fluent/Accents/BaseLight.xaml b/src/Avalonia.Themes.Fluent/Accents/BaseLight.xaml
index 89b646fb52..a9e5ed949a 100644
--- a/src/Avalonia.Themes.Fluent/Accents/BaseLight.xaml
+++ b/src/Avalonia.Themes.Fluent/Accents/BaseLight.xaml
@@ -36,6 +36,7 @@
+
diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs
index 848da1bfb6..a7bec62366 100644
--- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs
+++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs
@@ -1137,11 +1137,14 @@ namespace Avalonia.Skia
if (pen.DashStyle?.Dashes != null && pen.DashStyle.Dashes.Count > 0)
{
var srcDashes = pen.DashStyle.Dashes;
- var dashesArray = new float[srcDashes.Count];
- for (var i = 0; i < srcDashes.Count; ++i)
+ var count = srcDashes.Count % 2 == 0 ? srcDashes.Count : srcDashes.Count * 2;
+
+ var dashesArray = new float[count];
+
+ for (var i = 0; i < count; ++i)
{
- dashesArray[i] = (float) srcDashes[i] * paint.StrokeWidth;
+ dashesArray[i] = (float) srcDashes[i % srcDashes.Count] * paint.StrokeWidth;
}
var offset = (float)(pen.DashStyle.Offset * pen.Thickness);
diff --git a/src/Windows/Avalonia.Win32/OpenGl/Angle/AngleWin32PlatformGraphics.cs b/src/Windows/Avalonia.Win32/OpenGl/Angle/AngleWin32PlatformGraphics.cs
index 9b4eefd170..9a829aff92 100644
--- a/src/Windows/Avalonia.Win32/OpenGl/Angle/AngleWin32PlatformGraphics.cs
+++ b/src/Windows/Avalonia.Win32/OpenGl/Angle/AngleWin32PlatformGraphics.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Runtime.ExceptionServices;
using Avalonia.Logging;
using Avalonia.OpenGL;
using Avalonia.OpenGL.Angle;
@@ -88,8 +87,6 @@ internal class AngleWin32PlatformGraphics : IPlatformGraphics
return null;
}
- return new AngleWin32PlatformGraphics(egl, AngleWin32EglDisplay.CreateSharedD3D11Display(egl));
-
foreach (var api in (options?.AllowedPlatformApis ?? new []
{
AngleOptions.PlatformApi.DirectX11