diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index bc8d065137..9fa79ec5ba 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -1,3 +1,6 @@
+variables:
+ MSBuildEnableWorkloadResolver: 'false'
+
jobs:
- job: Linux
pool:
@@ -9,9 +12,9 @@ jobs:
version: 3.1.414
- task: UseDotNet@2
- displayName: 'Use .NET Core SDK 5.0.402'
+ displayName: 'Use .NET Core SDK 6.0.100'
inputs:
- version: 5.0.402
+ version: 6.0.100
- task: CmdLine@2
displayName: 'Run Build'
@@ -40,9 +43,9 @@ jobs:
version: 3.1.414
- task: UseDotNet@2
- displayName: 'Use .NET Core SDK 5.0.402'
+ displayName: 'Use .NET Core SDK 6.0.100'
inputs:
- version: 5.0.402
+ version: 6.0.100
- task: CmdLine@2
displayName: 'Install Mono 5.18'
@@ -56,7 +59,7 @@ jobs:
inputs:
script: |
export PATH="`pwd`/sdk:$PATH"
- cd src/tools/MicroComGenerator; dotnet run -i ../../Avalonia.Native/avn.idl --cpp ../../../native/Avalonia.Native/inc/avalonia-native.h
+ cd src/tools/MicroComGenerator; dotnet run -f net6.0 -i ../../Avalonia.Native/avn.idl --cpp ../../../native/Avalonia.Native/inc/avalonia-native.h
- task: Xcode@5
inputs:
@@ -110,9 +113,9 @@ jobs:
version: 3.1.414
- task: UseDotNet@2
- displayName: 'Use .NET Core SDK 5.0.402'
+ displayName: 'Use .NET Core SDK 6.0.100'
inputs:
- version: 5.0.402
+ version: 6.0.100
- task: CmdLine@2
displayName: 'Install Nuke'
diff --git a/build/HarfBuzzSharp.props b/build/HarfBuzzSharp.props
index 13419eb173..16aab3911e 100644
--- a/build/HarfBuzzSharp.props
+++ b/build/HarfBuzzSharp.props
@@ -1,6 +1,6 @@
-
-
+
+
diff --git a/build/MicroCom.targets b/build/MicroCom.targets
index 49d2cdce72..1ed388f689 100644
--- a/build/MicroCom.targets
+++ b/build/MicroCom.targets
@@ -15,7 +15,7 @@
Inputs="@(AvnComIdl);$(MSBuildThisFileDirectory)../src/tools/MicroComGenerator/**/*.cs"
Outputs="%(AvnComIdl.OutputFile)">
-
diff --git a/build/SkiaSharp.props b/build/SkiaSharp.props
index f2e7df36cd..97b29a192d 100644
--- a/build/SkiaSharp.props
+++ b/build/SkiaSharp.props
@@ -1,6 +1,6 @@
-
-
+
+
diff --git a/global.json b/global.json
index 9f83c1ea1e..e3e652761c 100644
--- a/global.json
+++ b/global.json
@@ -1,7 +1,7 @@
{
- "sdk": {
- "version": "5.0.402"
- },
+ "sdk": {
+ "version": "6.0.100"
+ },
"msbuild-sdks": {
"Microsoft.Build.Traversal": "1.0.43",
"MSBuild.Sdk.Extras": "2.0.54",
diff --git a/native/Avalonia.Native/src/OSX/window.mm b/native/Avalonia.Native/src/OSX/window.mm
index 094c1f7c93..2073e130cb 100644
--- a/native/Avalonia.Native/src/OSX/window.mm
+++ b/native/Avalonia.Native/src/OSX/window.mm
@@ -2398,11 +2398,18 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent
{
case NSEventTypeLeftMouseDown:
{
- auto avnPoint = [AvnView toAvnPoint:[event locationInWindow]];
- auto point = [self translateLocalPoint:avnPoint];
- AvnVector delta;
+ AvnView* view = _parent->View;
+ NSPoint windowPoint = [event locationInWindow];
+ NSPoint viewPoint = [view convertPoint:windowPoint fromView:nil];
- _parent->BaseEvents->RawMouseEvent(NonClientLeftButtonDown, [event timestamp] * 1000, AvnInputModifiersNone, point, delta);
+ if (!NSPointInRect(viewPoint, view.bounds))
+ {
+ auto avnPoint = [AvnView toAvnPoint:windowPoint];
+ auto point = [self translateLocalPoint:avnPoint];
+ AvnVector delta;
+
+ _parent->BaseEvents->RawMouseEvent(NonClientLeftButtonDown, [event timestamp] * 1000, AvnInputModifiersNone, point, delta);
+ }
}
break;
diff --git a/nukebuild/_build.csproj b/nukebuild/_build.csproj
index e08ffd0413..b28d3eb700 100644
--- a/nukebuild/_build.csproj
+++ b/nukebuild/_build.csproj
@@ -15,6 +15,7 @@
+
@@ -36,10 +37,10 @@
-
-
-
-
+
+ MicroComGenerator\%(Filename)%(Extension)
+
+
diff --git a/samples/BindingDemo/BindingDemo.csproj b/samples/BindingDemo/BindingDemo.csproj
index d898b737a9..2c6ff74e5e 100644
--- a/samples/BindingDemo/BindingDemo.csproj
+++ b/samples/BindingDemo/BindingDemo.csproj
@@ -1,7 +1,7 @@
Exe
- netcoreapp3.1
+ net6.0
diff --git a/samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj b/samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj
index 3c2d2ee359..2d4fc45171 100644
--- a/samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj
+++ b/samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj
@@ -2,7 +2,7 @@
WinExe
- netcoreapp3.1
+ net6.0
true
diff --git a/samples/PlatformSanityChecks/PlatformSanityChecks.csproj b/samples/PlatformSanityChecks/PlatformSanityChecks.csproj
index 86d762a5bc..9660d2a90d 100644
--- a/samples/PlatformSanityChecks/PlatformSanityChecks.csproj
+++ b/samples/PlatformSanityChecks/PlatformSanityChecks.csproj
@@ -2,7 +2,7 @@
Exe
- netcoreapp3.1
+ net6.0
diff --git a/samples/Previewer/Previewer.csproj b/samples/Previewer/Previewer.csproj
index cfedb7ad9e..c1d14cba26 100644
--- a/samples/Previewer/Previewer.csproj
+++ b/samples/Previewer/Previewer.csproj
@@ -1,7 +1,7 @@
Exe
- netcoreapp3.1
+ net6.0
diff --git a/samples/RemoteDemo/RemoteDemo.csproj b/samples/RemoteDemo/RemoteDemo.csproj
index 530cad805f..607222c2e2 100644
--- a/samples/RemoteDemo/RemoteDemo.csproj
+++ b/samples/RemoteDemo/RemoteDemo.csproj
@@ -1,7 +1,7 @@
Exe
- netcoreapp3.1
+ net6.0
diff --git a/samples/RenderDemo/RenderDemo.csproj b/samples/RenderDemo/RenderDemo.csproj
index 0d33b4c111..eed6fa9e89 100644
--- a/samples/RenderDemo/RenderDemo.csproj
+++ b/samples/RenderDemo/RenderDemo.csproj
@@ -1,7 +1,7 @@
Exe
- netcoreapp3.1
+ net6.0
diff --git a/samples/Sandbox/Sandbox.csproj b/samples/Sandbox/Sandbox.csproj
index 0c19440a1e..8f2812e048 100644
--- a/samples/Sandbox/Sandbox.csproj
+++ b/samples/Sandbox/Sandbox.csproj
@@ -2,7 +2,7 @@
WinExe
- netcoreapp3.1
+ net6.0
true
diff --git a/samples/VirtualizationDemo/VirtualizationDemo.csproj b/samples/VirtualizationDemo/VirtualizationDemo.csproj
index d898b737a9..2c6ff74e5e 100644
--- a/samples/VirtualizationDemo/VirtualizationDemo.csproj
+++ b/samples/VirtualizationDemo/VirtualizationDemo.csproj
@@ -1,7 +1,7 @@
Exe
- netcoreapp3.1
+ net6.0
diff --git a/src/Avalonia.Controls/MenuItem.cs b/src/Avalonia.Controls/MenuItem.cs
index 7b06d3c868..0bead04982 100644
--- a/src/Avalonia.Controls/MenuItem.cs
+++ b/src/Avalonia.Controls/MenuItem.cs
@@ -387,7 +387,7 @@ namespace Avalonia.Controls
parent = parent.Parent;
}
- _isEmbeddedInMenu = parent is IMenu;
+ _isEmbeddedInMenu = parent.FindLogicalAncestorOfType(true) != null;
}
protected override void OnDetachedFromLogicalTree(LogicalTreeAttachmentEventArgs e)
diff --git a/src/Avalonia.Controls/Platform/PlatformManager.cs b/src/Avalonia.Controls/Platform/PlatformManager.cs
index e39f0b1e99..acd45ad29a 100644
--- a/src/Avalonia.Controls/Platform/PlatformManager.cs
+++ b/src/Avalonia.Controls/Platform/PlatformManager.cs
@@ -29,7 +29,7 @@ namespace Avalonia.Controls.Platform
if (platform == null)
{
- throw new Exception("Could not CreateWindow(): IWindowingPlatform is not registered.");
+ throw new Exception("Could not CreateTrayIcon(): IWindowingPlatform is not registered.");
}
return s_designerMode ? null : platform.CreateTrayIcon();
@@ -45,7 +45,7 @@ namespace Avalonia.Controls.Platform
throw new Exception("Could not CreateWindow(): IWindowingPlatform is not registered.");
}
- return s_designerMode ? (IWindowImpl)platform.CreateEmbeddableWindow() : platform.CreateWindow();
+ return s_designerMode ? platform.CreateEmbeddableWindow() : platform.CreateWindow();
}
public static IWindowImpl CreateEmbeddableWindow()
diff --git a/src/Avalonia.Input/Gestures.cs b/src/Avalonia.Input/Gestures.cs
index 8d74001309..639b4ef117 100644
--- a/src/Avalonia.Input/Gestures.cs
+++ b/src/Avalonia.Input/Gestures.cs
@@ -30,7 +30,7 @@ namespace Avalonia.Input
"ScrollGestureEnded", RoutingStrategies.Bubble, typeof(Gestures));
#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
- private static WeakReference s_lastPress = new WeakReference(null);
+ private static readonly WeakReference s_lastPress = new WeakReference(null);
#pragma warning restore CS8625 // Cannot convert null literal to non-nullable reference type.
static Gestures()
@@ -86,16 +86,15 @@ namespace Avalonia.Input
#pragma warning restore CS0618 // Type or member is obsolete
if (clickCount <= 1)
{
- s_lastPress = new WeakReference(ev.Source);
+ s_lastPress.SetTarget(ev.Source);
}
- else if (s_lastPress != null && clickCount == 2 && e.GetCurrentPoint(visual).Properties.IsLeftButtonPressed)
+ else if (clickCount == 2 && e.GetCurrentPoint(visual).Properties.IsLeftButtonPressed)
{
if (s_lastPress.TryGetTarget(out var target) && target == e.Source)
{
e.Source.RaiseEvent(new TappedEventArgs(DoubleTappedEvent, e));
}
}
-
}
}
diff --git a/src/Avalonia.Input/InputElement.cs b/src/Avalonia.Input/InputElement.cs
index b5ab7b4da1..26ebf86857 100644
--- a/src/Avalonia.Input/InputElement.cs
+++ b/src/Avalonia.Input/InputElement.cs
@@ -632,7 +632,7 @@ namespace Avalonia.Input
}
else if (change.Property == IsKeyboardFocusWithinProperty)
{
- PseudoClasses.Set(":focus-within", _isKeyboardFocusWithin);
+ PseudoClasses.Set(":focus-within", change.NewValue.GetValueOrDefault());
}
}
diff --git a/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs b/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs
index 52427c4ae6..88fbd290e6 100644
--- a/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs
+++ b/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs
@@ -20,6 +20,7 @@ namespace Avalonia.Rendering
{
private readonly IVisual _root;
private readonly IRenderRoot _renderRoot;
+ private bool _updateTransformedBounds = true;
private IRenderTarget _renderTarget;
///
@@ -34,6 +35,13 @@ namespace Avalonia.Rendering
_renderRoot = root as IRenderRoot;
}
+ private ImmediateRenderer(IVisual root, bool updateTransformedBounds)
+ {
+ _root = root ?? throw new ArgumentNullException(nameof(root));
+ _renderRoot = root as IRenderRoot;
+ _updateTransformedBounds = updateTransformedBounds;
+ }
+
///
public bool DrawFps { get; set; }
@@ -98,7 +106,7 @@ namespace Avalonia.Rendering
/// The render target.
public static void Render(IVisual visual, IRenderTarget target)
{
- using (var renderer = new ImmediateRenderer(visual))
+ using (var renderer = new ImmediateRenderer(visual, updateTransformedBounds: false))
using (var context = new DrawingContext(target.CreateDrawingContext(renderer)))
{
renderer.Render(context, visual, visual.Bounds);
@@ -112,7 +120,7 @@ namespace Avalonia.Rendering
/// The drawing context.
public static void Render(IVisual visual, DrawingContext context)
{
- using (var renderer = new ImmediateRenderer(visual))
+ using (var renderer = new ImmediateRenderer(visual, updateTransformedBounds: false))
{
renderer.Render(context, visual, visual.Bounds);
}
@@ -193,6 +201,12 @@ namespace Avalonia.Rendering
Render(new DrawingContext(context), visual, visual.Bounds);
}
+ internal static void Render(IVisual visual, DrawingContext context, bool updateTransformedBounds)
+ {
+ using var renderer = new ImmediateRenderer(visual, updateTransformedBounds);
+ renderer.Render(context, visual, visual.Bounds);
+ }
+
private static void ClearTransformedBounds(IVisual visual)
{
foreach (var e in visual.GetSelfAndVisualDescendants())
@@ -308,7 +322,8 @@ namespace Avalonia.Rendering
new TransformedBounds(bounds, new Rect(), context.CurrentContainerTransform);
#pragma warning restore 0618
- visual.TransformedBounds = transformed;
+ if (_updateTransformedBounds)
+ visual.TransformedBounds = transformed;
foreach (var child in visual.VisualChildren.OrderBy(x => x, ZIndexComparer.Instance))
{
@@ -321,7 +336,7 @@ namespace Avalonia.Rendering
: clipRect;
Render(context, child, childClipRect);
}
- else
+ else if (_updateTransformedBounds)
{
ClearTransformedBounds(child);
}
@@ -329,7 +344,7 @@ namespace Avalonia.Rendering
}
}
- if (!visual.IsVisible)
+ if (!visual.IsVisible && _updateTransformedBounds)
{
ClearTransformedBounds(visual);
}
diff --git a/src/Skia/Avalonia.Skia/Gpu/OpenGl/GlSkiaGpu.cs b/src/Skia/Avalonia.Skia/Gpu/OpenGl/GlSkiaGpu.cs
index 0ac42277e7..ec8a8436e1 100644
--- a/src/Skia/Avalonia.Skia/Gpu/OpenGl/GlSkiaGpu.cs
+++ b/src/Skia/Avalonia.Skia/Gpu/OpenGl/GlSkiaGpu.cs
@@ -25,7 +25,7 @@ namespace Avalonia.Skia
GRGlInterface.CreateOpenGl(proc => context.GlInterface.GetProcAddress(proc)) :
GRGlInterface.CreateGles(proc => context.GlInterface.GetProcAddress(proc)))
{
- _grContext = GRContext.CreateGl(iface);
+ _grContext = GRContext.CreateGl(iface, new GRContextOptions { AvoidStencilBuffers = true });
if (maxResourceBytes.HasValue)
{
_grContext.SetResourceCacheLimit(maxResourceBytes.Value);
diff --git a/src/tools/MicroComGenerator/MicroComGenerator.csproj b/src/tools/MicroComGenerator/MicroComGenerator.csproj
index 5ae431b4b9..68895b96ca 100644
--- a/src/tools/MicroComGenerator/MicroComGenerator.csproj
+++ b/src/tools/MicroComGenerator/MicroComGenerator.csproj
@@ -1,8 +1,8 @@
-
- Exe
- netcoreapp3.1
-
+
+ Exe
+ net6.0
+
diff --git a/tests/Avalonia.Animation.UnitTests/Avalonia.Animation.UnitTests.csproj b/tests/Avalonia.Animation.UnitTests/Avalonia.Animation.UnitTests.csproj
index 5b686dea4c..e07ece5460 100644
--- a/tests/Avalonia.Animation.UnitTests/Avalonia.Animation.UnitTests.csproj
+++ b/tests/Avalonia.Animation.UnitTests/Avalonia.Animation.UnitTests.csproj
@@ -1,6 +1,6 @@
- netcoreapp3.1;net47
+ net6.0
Library
true
diff --git a/tests/Avalonia.Base.UnitTests/Avalonia.Base.UnitTests.csproj b/tests/Avalonia.Base.UnitTests/Avalonia.Base.UnitTests.csproj
index c4c1f49346..9628d16a6c 100644
--- a/tests/Avalonia.Base.UnitTests/Avalonia.Base.UnitTests.csproj
+++ b/tests/Avalonia.Base.UnitTests/Avalonia.Base.UnitTests.csproj
@@ -1,6 +1,6 @@
- netcoreapp3.1;net47
+ net6.0
Library
true
latest
diff --git a/tests/Avalonia.Benchmarks/Avalonia.Benchmarks.csproj b/tests/Avalonia.Benchmarks/Avalonia.Benchmarks.csproj
index e8e69efdbc..3994d20c68 100644
--- a/tests/Avalonia.Benchmarks/Avalonia.Benchmarks.csproj
+++ b/tests/Avalonia.Benchmarks/Avalonia.Benchmarks.csproj
@@ -1,7 +1,7 @@
Exe
- netcoreapp3.1
+ net6.0
Exe
false
diff --git a/tests/Avalonia.Controls.DataGrid.UnitTests/Avalonia.Controls.DataGrid.UnitTests.csproj b/tests/Avalonia.Controls.DataGrid.UnitTests/Avalonia.Controls.DataGrid.UnitTests.csproj
index c0c9303767..eb1bf24d0c 100644
--- a/tests/Avalonia.Controls.DataGrid.UnitTests/Avalonia.Controls.DataGrid.UnitTests.csproj
+++ b/tests/Avalonia.Controls.DataGrid.UnitTests/Avalonia.Controls.DataGrid.UnitTests.csproj
@@ -1,6 +1,6 @@
- netcoreapp3.1;net47
+ net6.0
latest
Library
true
diff --git a/tests/Avalonia.Controls.UnitTests/Avalonia.Controls.UnitTests.csproj b/tests/Avalonia.Controls.UnitTests/Avalonia.Controls.UnitTests.csproj
index 6b17427eda..8dd8e843ac 100644
--- a/tests/Avalonia.Controls.UnitTests/Avalonia.Controls.UnitTests.csproj
+++ b/tests/Avalonia.Controls.UnitTests/Avalonia.Controls.UnitTests.csproj
@@ -1,6 +1,6 @@
- netcoreapp3.1;net47
+ net6.0
latest
Library
true
diff --git a/tests/Avalonia.DesignerSupport.TestApp/Avalonia.DesignerSupport.TestApp.csproj b/tests/Avalonia.DesignerSupport.TestApp/Avalonia.DesignerSupport.TestApp.csproj
index 523c5e7ff4..5358b71571 100644
--- a/tests/Avalonia.DesignerSupport.TestApp/Avalonia.DesignerSupport.TestApp.csproj
+++ b/tests/Avalonia.DesignerSupport.TestApp/Avalonia.DesignerSupport.TestApp.csproj
@@ -1,7 +1,7 @@
Exe
- netcoreapp3.1
+ net6.0
false
diff --git a/tests/Avalonia.DesignerSupport.Tests/Avalonia.DesignerSupport.Tests.csproj b/tests/Avalonia.DesignerSupport.Tests/Avalonia.DesignerSupport.Tests.csproj
index dad500e3c6..3af8d6e0d7 100644
--- a/tests/Avalonia.DesignerSupport.Tests/Avalonia.DesignerSupport.Tests.csproj
+++ b/tests/Avalonia.DesignerSupport.Tests/Avalonia.DesignerSupport.Tests.csproj
@@ -1,6 +1,6 @@
- netcoreapp3.1
+ net6.0
Library
@@ -18,4 +18,4 @@
-
\ No newline at end of file
+
diff --git a/tests/Avalonia.DesignerSupport.Tests/DesignerSupportTests.cs b/tests/Avalonia.DesignerSupport.Tests/DesignerSupportTests.cs
index d76ed9042f..6e32158fcb 100644
--- a/tests/Avalonia.DesignerSupport.Tests/DesignerSupportTests.cs
+++ b/tests/Avalonia.DesignerSupport.Tests/DesignerSupportTests.cs
@@ -29,25 +29,25 @@ namespace Avalonia.DesignerSupport.Tests
[SkippableTheory,
InlineData(
- @"..\..\..\..\..\tests/Avalonia.DesignerSupport.TestApp/bin/$BUILD/netcoreapp3.1/",
+ @"..\..\..\..\..\tests/Avalonia.DesignerSupport.TestApp/bin/$BUILD/net6.0/",
"Avalonia.DesignerSupport.TestApp",
"Avalonia.DesignerSupport.TestApp.dll",
@"..\..\..\..\..\tests\Avalonia.DesignerSupport.TestApp\MainWindow.xaml",
"win32"),
InlineData(
- @"..\..\..\..\..\samples\ControlCatalog.NetCore\bin\$BUILD\netcoreapp3.1\",
+ @"..\..\..\..\..\samples\ControlCatalog.NetCore\bin\$BUILD\net6.0\",
"ControlCatalog.NetCore",
"ControlCatalog.dll",
@"..\..\..\..\..\samples\ControlCatalog\MainWindow.xaml",
"win32"),
InlineData(
- @"..\..\..\..\..\tests/Avalonia.DesignerSupport.TestApp/bin/$BUILD/netcoreapp3.1/",
+ @"..\..\..\..\..\tests/Avalonia.DesignerSupport.TestApp/bin/$BUILD/net6.0/",
"Avalonia.DesignerSupport.TestApp",
"Avalonia.DesignerSupport.TestApp.dll",
@"..\..\..\..\..\tests\Avalonia.DesignerSupport.TestApp\MainWindow.xaml",
"avalonia-remote"),
InlineData(
- @"..\..\..\..\..\samples\ControlCatalog.NetCore\bin\$BUILD\netcoreapp3.1\",
+ @"..\..\..\..\..\samples\ControlCatalog.NetCore\bin\$BUILD\net6.0\",
"ControlCatalog.NetCore",
"ControlCatalog.dll",
@"..\..\..\..\..\samples\ControlCatalog\MainWindow.xaml",
diff --git a/tests/Avalonia.Direct2D1.RenderTests/Avalonia.Direct2D1.RenderTests.csproj b/tests/Avalonia.Direct2D1.RenderTests/Avalonia.Direct2D1.RenderTests.csproj
index c59e59be63..4353b7b09c 100644
--- a/tests/Avalonia.Direct2D1.RenderTests/Avalonia.Direct2D1.RenderTests.csproj
+++ b/tests/Avalonia.Direct2D1.RenderTests/Avalonia.Direct2D1.RenderTests.csproj
@@ -1,6 +1,6 @@
- netcoreapp3.1
+ net6.0
diff --git a/tests/Avalonia.Direct2D1.UnitTests/Avalonia.Direct2D1.UnitTests.csproj b/tests/Avalonia.Direct2D1.UnitTests/Avalonia.Direct2D1.UnitTests.csproj
index 42229ba456..636643d9e4 100644
--- a/tests/Avalonia.Direct2D1.UnitTests/Avalonia.Direct2D1.UnitTests.csproj
+++ b/tests/Avalonia.Direct2D1.UnitTests/Avalonia.Direct2D1.UnitTests.csproj
@@ -1,6 +1,6 @@
- netcoreapp3.1
+ net6.0
diff --git a/tests/Avalonia.Input.UnitTests/Avalonia.Input.UnitTests.csproj b/tests/Avalonia.Input.UnitTests/Avalonia.Input.UnitTests.csproj
index dd50eff2b6..3b0b082093 100644
--- a/tests/Avalonia.Input.UnitTests/Avalonia.Input.UnitTests.csproj
+++ b/tests/Avalonia.Input.UnitTests/Avalonia.Input.UnitTests.csproj
@@ -1,6 +1,6 @@
- netcoreapp3.1;net47
+ net6.0
Library
true
diff --git a/tests/Avalonia.Interactivity.UnitTests/Avalonia.Interactivity.UnitTests.csproj b/tests/Avalonia.Interactivity.UnitTests/Avalonia.Interactivity.UnitTests.csproj
index a9f5318e8f..f6cfe51db4 100644
--- a/tests/Avalonia.Interactivity.UnitTests/Avalonia.Interactivity.UnitTests.csproj
+++ b/tests/Avalonia.Interactivity.UnitTests/Avalonia.Interactivity.UnitTests.csproj
@@ -1,6 +1,6 @@
- netcoreapp3.1;net47
+ net6.0
Library
true
latest
diff --git a/tests/Avalonia.Layout.UnitTests/Avalonia.Layout.UnitTests.csproj b/tests/Avalonia.Layout.UnitTests/Avalonia.Layout.UnitTests.csproj
index 74cc6e292b..a3c85c72b5 100644
--- a/tests/Avalonia.Layout.UnitTests/Avalonia.Layout.UnitTests.csproj
+++ b/tests/Avalonia.Layout.UnitTests/Avalonia.Layout.UnitTests.csproj
@@ -1,6 +1,6 @@
- netcoreapp3.1
+ net6.0
Library
diff --git a/tests/Avalonia.Markup.UnitTests/Avalonia.Markup.UnitTests.csproj b/tests/Avalonia.Markup.UnitTests/Avalonia.Markup.UnitTests.csproj
index 7d1285c025..fceea56273 100644
--- a/tests/Avalonia.Markup.UnitTests/Avalonia.Markup.UnitTests.csproj
+++ b/tests/Avalonia.Markup.UnitTests/Avalonia.Markup.UnitTests.csproj
@@ -1,6 +1,6 @@
- netcoreapp3.1;net47
+ net6.0
Library
true
diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Avalonia.Markup.Xaml.UnitTests.csproj b/tests/Avalonia.Markup.Xaml.UnitTests/Avalonia.Markup.Xaml.UnitTests.csproj
index 7748115137..14f6525dbe 100644
--- a/tests/Avalonia.Markup.Xaml.UnitTests/Avalonia.Markup.Xaml.UnitTests.csproj
+++ b/tests/Avalonia.Markup.Xaml.UnitTests/Avalonia.Markup.Xaml.UnitTests.csproj
@@ -1,6 +1,6 @@
- netcoreapp3.1;net47
+ net6.0;net47
Library
true
latest
@@ -25,7 +25,6 @@
-
diff --git a/tests/Avalonia.ReactiveUI.UnitTests/Avalonia.ReactiveUI.UnitTests.csproj b/tests/Avalonia.ReactiveUI.UnitTests/Avalonia.ReactiveUI.UnitTests.csproj
index 95e10d7a2f..9f3ec4013c 100644
--- a/tests/Avalonia.ReactiveUI.UnitTests/Avalonia.ReactiveUI.UnitTests.csproj
+++ b/tests/Avalonia.ReactiveUI.UnitTests/Avalonia.ReactiveUI.UnitTests.csproj
@@ -1,6 +1,6 @@
- netcoreapp3.1
+ net6.0
false
diff --git a/tests/Avalonia.Skia.RenderTests/Avalonia.Skia.RenderTests.csproj b/tests/Avalonia.Skia.RenderTests/Avalonia.Skia.RenderTests.csproj
index 14d0f4debf..41c76dcd83 100644
--- a/tests/Avalonia.Skia.RenderTests/Avalonia.Skia.RenderTests.csproj
+++ b/tests/Avalonia.Skia.RenderTests/Avalonia.Skia.RenderTests.csproj
@@ -1,6 +1,6 @@
- netcoreapp3.1
+ net6.0
AVALONIA_SKIA;AVALONIA_SKIA_SKIP_FAIL
diff --git a/tests/Avalonia.Skia.UnitTests/Avalonia.Skia.UnitTests.csproj b/tests/Avalonia.Skia.UnitTests/Avalonia.Skia.UnitTests.csproj
index ef69865e32..e37cd25009 100644
--- a/tests/Avalonia.Skia.UnitTests/Avalonia.Skia.UnitTests.csproj
+++ b/tests/Avalonia.Skia.UnitTests/Avalonia.Skia.UnitTests.csproj
@@ -1,6 +1,6 @@
- netcoreapp3.1
+ net6.0
latest
diff --git a/tests/Avalonia.Styling.UnitTests/Avalonia.Styling.UnitTests.csproj b/tests/Avalonia.Styling.UnitTests/Avalonia.Styling.UnitTests.csproj
index 7864687800..c5eb636a9a 100644
--- a/tests/Avalonia.Styling.UnitTests/Avalonia.Styling.UnitTests.csproj
+++ b/tests/Avalonia.Styling.UnitTests/Avalonia.Styling.UnitTests.csproj
@@ -1,6 +1,6 @@
- netcoreapp3.1;net47
+ net6.0
Library
CS0067
true
diff --git a/tests/Avalonia.Visuals.UnitTests/Avalonia.Visuals.UnitTests.csproj b/tests/Avalonia.Visuals.UnitTests/Avalonia.Visuals.UnitTests.csproj
index 13a04be5db..57de90114e 100644
--- a/tests/Avalonia.Visuals.UnitTests/Avalonia.Visuals.UnitTests.csproj
+++ b/tests/Avalonia.Visuals.UnitTests/Avalonia.Visuals.UnitTests.csproj
@@ -1,6 +1,6 @@
- netcoreapp3.1;net47
+ net6.0
Library
true
diff --git a/tests/Avalonia.Visuals.UnitTests/Rendering/ImmediateRendererTests.cs b/tests/Avalonia.Visuals.UnitTests/Rendering/ImmediateRendererTests.cs
index acee9a50f5..6859b2b139 100644
--- a/tests/Avalonia.Visuals.UnitTests/Rendering/ImmediateRendererTests.cs
+++ b/tests/Avalonia.Visuals.UnitTests/Rendering/ImmediateRendererTests.cs
@@ -291,6 +291,24 @@ namespace Avalonia.Visuals.UnitTests.Rendering
}
}
+ [Fact]
+ public void Static_Render_Method_Does_Not_Update_TransformedBounds()
+ {
+ using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
+ {
+ var target = new Border();
+ var expected = new TransformedBounds(new Rect(1, 2, 3, 4), new Rect(4, 5, 6, 7), Matrix.CreateRotation(0.8));
+
+ ((IVisual)target).TransformedBounds = expected;
+
+ var renderTarget = Mock.Of(x =>
+ x.CreateDrawingContext(It.IsAny()) == Mock.Of());
+ ImmediateRenderer.Render(target, renderTarget);
+
+ Assert.Equal(expected, target.TransformedBounds);
+ }
+ }
+
private class TestControl : Control
{
public bool Rendered { get; private set; }
diff --git a/tests/Avalonia.Visuals.UnitTests/VisualTree/TransformedBoundsTests.cs b/tests/Avalonia.Visuals.UnitTests/VisualTree/TransformedBoundsTests.cs
index 8202735e5d..54d9ce40f0 100644
--- a/tests/Avalonia.Visuals.UnitTests/VisualTree/TransformedBoundsTests.cs
+++ b/tests/Avalonia.Visuals.UnitTests/VisualTree/TransformedBoundsTests.cs
@@ -40,7 +40,7 @@ namespace Avalonia.Visuals.UnitTests.VisualTree
tree.Measure(Size.Infinity);
tree.Arrange(new Rect(0, 0, 100, 100));
- ImmediateRenderer.Render(tree, context);
+ ImmediateRenderer.Render(tree, context, true);
var track = control.GetObservable(Visual.TransformedBoundsProperty);
var results = new List();