diff --git a/.ncrunch/AppWithoutLifetime.v3.ncrunchproject b/.ncrunch/AppWithoutLifetime.v3.ncrunchproject
new file mode 100644
index 0000000000..319cd523ce
--- /dev/null
+++ b/.ncrunch/AppWithoutLifetime.v3.ncrunchproject
@@ -0,0 +1,5 @@
+
+
+ True
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Headless.NUnit.netstandard2.0.v3.ncrunchproject b/.ncrunch/Avalonia.Headless.NUnit.netstandard2.0.v3.ncrunchproject
new file mode 100644
index 0000000000..319cd523ce
--- /dev/null
+++ b/.ncrunch/Avalonia.Headless.NUnit.netstandard2.0.v3.ncrunchproject
@@ -0,0 +1,5 @@
+
+
+ True
+
+
\ No newline at end of file
diff --git a/.ncrunch/Avalonia.Headless.XUnit.netstandard2.0.v3.ncrunchproject b/.ncrunch/Avalonia.Headless.XUnit.netstandard2.0.v3.ncrunchproject
new file mode 100644
index 0000000000..319cd523ce
--- /dev/null
+++ b/.ncrunch/Avalonia.Headless.XUnit.netstandard2.0.v3.ncrunchproject
@@ -0,0 +1,5 @@
+
+
+ True
+
+
\ No newline at end of file
diff --git a/src/Android/Avalonia.Android/Platform/Input/AndroidKeyboardDevice.cs b/src/Android/Avalonia.Android/Platform/Input/AndroidKeyboardDevice.cs
index ab84801e57..a416e05b52 100644
--- a/src/Android/Avalonia.Android/Platform/Input/AndroidKeyboardDevice.cs
+++ b/src/Android/Avalonia.Android/Platform/Input/AndroidKeyboardDevice.cs
@@ -5,8 +5,9 @@ using Avalonia.Input;
namespace Avalonia.Android.Platform.Input
{
- internal class AndroidKeyboardDevice : KeyboardDevice, IKeyboardDevice {
- private static readonly Dictionary KeyDic = new Dictionary
+ internal class AndroidKeyboardDevice : KeyboardDevice, IKeyboardDevice
+ {
+ private static readonly Dictionary KeyDic = new Dictionary
{
// { Keycode.Cancel?, Key.Cancel },
{ Keycode.Del, Key.Back },
@@ -15,7 +16,7 @@ namespace Avalonia.Android.Platform.Input
{ Keycode.Clear, Key.Clear },
{ Keycode.Enter, Key.Return },
{ Keycode.MediaPause, Key.Pause },
- //{ Keycode.?, Key.CapsLock }
+ { Keycode.CapsLock, Key.CapsLock },
//{ Keycode.?, Key.HangulMode }
//{ Keycode.?, Key.JunjaMode }
//{ Keycode.?, Key.FinalMode }
@@ -28,8 +29,8 @@ namespace Avalonia.Android.Platform.Input
{ Keycode.Space, Key.Space },
{ Keycode.PageUp, Key.Prior },
{ Keycode.PageDown, Key.PageDown },
- // { Keycode.end?, Key.End },
- { Keycode.Home, Key.Home },
+ { Keycode.MoveEnd, Key.End },
+ { Keycode.MoveHome, Key.Home },
{ Keycode.DpadLeft, Key.Left },
{ Keycode.DpadUp, Key.Up },
{ Keycode.DpadRight, Key.Right },
@@ -37,20 +38,20 @@ namespace Avalonia.Android.Platform.Input
// { Keycode.ButtonSelect?, Key.Select },
// { Keycode.print?, Key.Print },
//{ Keycode.execute?, Key.Execute },
- // { Keycode.snap, Key.Snapshot }
+ //{ Keycode.snap?, Key.Snapshot }
{ Keycode.Insert, Key.Insert },
{ Keycode.ForwardDel, Key.Delete },
- //{ Keycode.help, Key.Help },
- //{ Keycode.?, Key.D0 }
- //{ Keycode.?, Key.D1 }
- //{ Keycode.?, Key.D2 }
- //{ Keycode.?, Key.D3 }
- //{ Keycode.?, Key.D4 }
- //{ Keycode.?, Key.D5 }
- //{ Keycode.?, Key.D6 }
- //{ Keycode.?, Key.D7 }
- //{ Keycode.?, Key.D8 }
- //{ Keycode.?, Key.D9 }
+ { Keycode.Help, Key.Help },
+ { Keycode.Num0, Key.D0 },
+ { Keycode.Num1, Key.D1 },
+ { Keycode.Num2, Key.D2 },
+ { Keycode.Num3, Key.D3 },
+ { Keycode.Num4, Key.D4 },
+ { Keycode.Num5, Key.D5 },
+ { Keycode.Num6, Key.D6 },
+ { Keycode.Num7, Key.D7 },
+ { Keycode.Num8, Key.D8 },
+ { Keycode.Num9, Key.D9 },
{ Keycode.A, Key.A },
{ Keycode.B, Key.B },
{ Keycode.C, Key.C },
@@ -106,22 +107,22 @@ namespace Avalonia.Android.Platform.Input
//{ Keycode.?, Key.LWin }
//{ Keycode.?, Key.RWin }
//{ Keycode.?, Key.Apps }
- //{ Keycode.?, Key.Sleep }
- //{ Keycode.?, Key.NumPad0 }
- //{ Keycode.?, Key.NumPad1 }
- //{ Keycode.?, Key.NumPad2 }
- //{ Keycode.?, Key.NumPad3 }
- //{ Keycode.?, Key.NumPad4 }
- //{ Keycode.?, Key.NumPad5 }
- //{ Keycode.?, Key.NumPad6 }
- //{ Keycode.?, Key.NumPad7 }
- //{ Keycode.?, Key.NumPad8 }
- //{ Keycode.?, Key.NumPad9 }
+ { Keycode.Sleep, Key.Sleep },
+ { Keycode.Numpad0, Key.NumPad0 },
+ { Keycode.Numpad1, Key.NumPad1 },
+ { Keycode.Numpad2, Key.NumPad2 },
+ { Keycode.Numpad3, Key.NumPad3 },
+ { Keycode.Numpad4, Key.NumPad4 },
+ { Keycode.Numpad5, Key.NumPad5 },
+ { Keycode.Numpad6, Key.NumPad6 },
+ { Keycode.Numpad7, Key.NumPad7 },
+ { Keycode.Numpad8, Key.NumPad8 },
+ { Keycode.Numpad9, Key.NumPad9 },
{ Keycode.NumpadMultiply, Key.Multiply },
{ Keycode.NumpadAdd, Key.Add },
{ Keycode.NumpadComma, Key.Separator },
{ Keycode.NumpadSubtract, Key.Subtract },
- //{ Keycode.numpaddecimal?, Key.Decimal }
+ { Keycode.NumpadDot, Key.Decimal },
{ Keycode.NumpadDivide, Key.Divide },
{ Keycode.F1, Key.F1 },
{ Keycode.F2, Key.F2 },
@@ -147,14 +148,14 @@ namespace Avalonia.Android.Platform.Input
//{ Keycode.R2, Key.F22 },
//{ Keycode.F23, Key.F23 },
//{ Keycode.R4, Key.F24 },
- // { Keycode.numpad, Key.NumLock }
+ { Keycode.NumLock, Key.NumLock },
{ Keycode.ScrollLock, Key.Scroll },
{ Keycode.ShiftLeft, Key.LeftShift },
- //{ Keycode.?, Key.RightShift }
- //{ Keycode.?, Key.LeftCtrl }
- //{ Keycode.?, Key.RightCtrl }
- //{ Keycode.?, Key.LeftAlt }
- //{ Keycode.?, Key.RightAlt }
+ { Keycode.ShiftRight, Key.RightShift },
+ { Keycode.CtrlLeft, Key.LeftCtrl },
+ { Keycode.CtrlRight, Key.RightCtrl },
+ { Keycode.AltLeft, Key.LeftAlt },
+ { Keycode.AltRight, Key.RightAlt },
//{ Keycode.?, Key.BrowserBack }
//{ Keycode.?, Key.BrowserForward }
//{ Keycode.?, Key.BrowserRefresh }
@@ -163,28 +164,30 @@ namespace Avalonia.Android.Platform.Input
//{ Keycode.?, Key.BrowserFavorites }
//{ Keycode.?, Key.BrowserHome }
//{ Keycode.?, Key.VolumeMute }
- //{ Keycode.?, Key.VolumeDown }
- //{ Keycode.?, Key.VolumeUp }
- //{ Keycode.?, Key.MediaNextTrack }
- //{ Keycode.?, Key.MediaPreviousTrack }
- //{ Keycode.?, Key.MediaStop }
- //{ Keycode.?, Key.MediaPlayPause }
+ { Keycode.VolumeDown, Key.VolumeDown },
+ { Keycode.VolumeUp, Key.VolumeUp },
+ { Keycode.MediaNext, Key.MediaNextTrack },
+ { Keycode.MediaPrevious, Key.MediaPreviousTrack },
+ { Keycode.MediaStop, Key.MediaStop },
+ { Keycode.MediaPlayPause, Key.MediaPlayPause },
//{ Keycode.?, Key.LaunchMail }
//{ Keycode.?, Key.SelectMedia }
//{ Keycode.?, Key.LaunchApplication1 }
//{ Keycode.?, Key.LaunchApplication2 }
- //{ Keycode.?, Key.OemSemicolon }
- //{ Keycode.?, Key.OemPlus }
- //{ Keycode.?, Key.OemComma }
- //{ Keycode.?, Key.OemMinus }
- //{ Keycode.?, Key.OemPeriod }
+ { Keycode.Semicolon, Key.OemSemicolon },
+ { Keycode.Plus, Key.OemPlus },
+ { Keycode.Comma, Key.OemComma },
+ { Keycode.Minus, Key.OemMinus },
+ { Keycode.Period, Key.OemPeriod },
//{ Keycode.?, Key.Oem2 }
- //{ Keycode.?, Key.OemTilde }
+ { Keycode.Grave, Key.OemTilde },
//{ Keycode.?, Key.AbntC1 }
//{ Keycode.?, Key.AbntC2 }
- //{ Keycode.?, Key.Oem4 }
//{ Keycode.?, Key.OemPipe }
- //{ Keycode.?, Key.OemCloseBrackets }
+ { Keycode.Apostrophe, Key.OemQuotes },
+ { Keycode.Slash, Key.OemQuestion },
+ { Keycode.LeftBracket, Key.OemOpenBrackets },
+ { Keycode.RightBracket, Key.OemCloseBrackets },
//{ Keycode.?, Key.Oem7 }
//{ Keycode.?, Key.Oem8 }
//{ Keycode.?, Key.Oem102 }
@@ -200,17 +203,18 @@ namespace Avalonia.Android.Platform.Input
//{ Keycode.?, Key.DbeEnterWordRegisterMode }
//{ Keycode.?, Key.DbeEnterImeConfigureMode }
//{ Keycode.?, Key.EraseEof }
- //{ Keycode.?, Key.Play }
+ { Keycode.MediaPlay, Key.Play },
//{ Keycode.?, Key.Zoom }
//{ Keycode.?, Key.NoName }
//{ Keycode.?, Key.DbeEnterDialogConversionMode }
//{ Keycode.?, Key.OemClear }
//{ Keycode.?, Key.DeadCharProcessed }
+ { Keycode.Backslash, Key.OemBackslash }
};
- internal static Key ConvertKey(Keycode key) {
- Key result;
- return KeyDic.TryGetValue(key, out result) ? result : Key.None;
+ internal static Key ConvertKey(Keycode key)
+ {
+ return KeyDic.TryGetValue(key, out var result) ? result : Key.None;
+ }
}
- }
}
diff --git a/src/Avalonia.Base/Animation/AnimatorKeyFrame.cs b/src/Avalonia.Base/Animation/AnimatorKeyFrame.cs
index dcce75b31c..892be5cb26 100644
--- a/src/Avalonia.Base/Animation/AnimatorKeyFrame.cs
+++ b/src/Avalonia.Base/Animation/AnimatorKeyFrame.cs
@@ -67,7 +67,7 @@ namespace Avalonia.Animation
}
}
- [RequiresUnreferencedCode(TrimmingMessages.TypeConvertionRequiresUnreferencedCodeMessage)]
+ [RequiresUnreferencedCode(TrimmingMessages.TypeConversionRequiresUnreferencedCodeMessage)]
public T GetTypedValue<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] T>()
{
var typeConv = TypeDescriptor.GetConverter(typeof(T));
diff --git a/src/Avalonia.Base/AvaloniaProperty.cs b/src/Avalonia.Base/AvaloniaProperty.cs
index 95f8eea852..5ab52cfde9 100644
--- a/src/Avalonia.Base/AvaloniaProperty.cs
+++ b/src/Avalonia.Base/AvaloniaProperty.cs
@@ -476,7 +476,7 @@ namespace Avalonia
///
/// The value.
/// True if the value is valid, otherwise false.
- [RequiresUnreferencedCode(TrimmingMessages.ImplicitTypeConvertionRequiresUnreferencedCodeMessage)]
+ [RequiresUnreferencedCode(TrimmingMessages.ImplicitTypeConversionRequiresUnreferencedCodeMessage)]
public bool IsValidValue(object? value)
{
return TypeUtilities.TryConvertImplicit(PropertyType, value, out _);
diff --git a/src/Avalonia.Base/AvaloniaProperty`1.cs b/src/Avalonia.Base/AvaloniaProperty`1.cs
index ea2f3577e5..c7e0f381b3 100644
--- a/src/Avalonia.Base/AvaloniaProperty`1.cs
+++ b/src/Avalonia.Base/AvaloniaProperty`1.cs
@@ -70,7 +70,7 @@ namespace Avalonia
private protected override IObservable GetChanged() => Changed;
- [UnconditionalSuppressMessage("Trimming", "IL2026", Justification = TrimmingMessages.ImplicitTypeConvertionSupressWarningMessage)]
+ [UnconditionalSuppressMessage("Trimming", "IL2026", Justification = TrimmingMessages.ImplicitTypeConversionSupressWarningMessage)]
private protected BindingValue