Browse Source

Merge branch 'master' into fixes/static-resource-brush-converter

pull/6815/head
Jumar Macato 5 years ago
committed by GitHub
parent
commit
84dc198e4a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 17
      azure-pipelines.yml
  2. 4
      build/HarfBuzzSharp.props
  3. 2
      build/MicroCom.targets
  4. 4
      build/SkiaSharp.props
  5. 6
      global.json
  6. 15
      native/Avalonia.Native/src/OSX/window.mm
  7. 9
      nukebuild/_build.csproj
  8. 2
      samples/BindingDemo/BindingDemo.csproj
  9. 2
      samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj
  10. 2
      samples/PlatformSanityChecks/PlatformSanityChecks.csproj
  11. 2
      samples/Previewer/Previewer.csproj
  12. 2
      samples/RemoteDemo/RemoteDemo.csproj
  13. 2
      samples/RenderDemo/RenderDemo.csproj
  14. 2
      samples/Sandbox/Sandbox.csproj
  15. 2
      samples/VirtualizationDemo/VirtualizationDemo.csproj
  16. 2
      src/Avalonia.Controls/MenuItem.cs
  17. 4
      src/Avalonia.Controls/Platform/PlatformManager.cs
  18. 7
      src/Avalonia.Input/Gestures.cs
  19. 2
      src/Avalonia.Input/InputElement.cs
  20. 25
      src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs
  21. 2
      src/Skia/Avalonia.Skia/Gpu/OpenGl/GlSkiaGpu.cs
  22. 8
      src/tools/MicroComGenerator/MicroComGenerator.csproj
  23. 2
      tests/Avalonia.Animation.UnitTests/Avalonia.Animation.UnitTests.csproj
  24. 2
      tests/Avalonia.Base.UnitTests/Avalonia.Base.UnitTests.csproj
  25. 2
      tests/Avalonia.Benchmarks/Avalonia.Benchmarks.csproj
  26. 2
      tests/Avalonia.Controls.DataGrid.UnitTests/Avalonia.Controls.DataGrid.UnitTests.csproj
  27. 2
      tests/Avalonia.Controls.UnitTests/Avalonia.Controls.UnitTests.csproj
  28. 2
      tests/Avalonia.DesignerSupport.TestApp/Avalonia.DesignerSupport.TestApp.csproj
  29. 4
      tests/Avalonia.DesignerSupport.Tests/Avalonia.DesignerSupport.Tests.csproj
  30. 8
      tests/Avalonia.DesignerSupport.Tests/DesignerSupportTests.cs
  31. 2
      tests/Avalonia.Direct2D1.RenderTests/Avalonia.Direct2D1.RenderTests.csproj
  32. 2
      tests/Avalonia.Direct2D1.UnitTests/Avalonia.Direct2D1.UnitTests.csproj
  33. 2
      tests/Avalonia.Input.UnitTests/Avalonia.Input.UnitTests.csproj
  34. 2
      tests/Avalonia.Interactivity.UnitTests/Avalonia.Interactivity.UnitTests.csproj
  35. 2
      tests/Avalonia.Layout.UnitTests/Avalonia.Layout.UnitTests.csproj
  36. 2
      tests/Avalonia.Markup.UnitTests/Avalonia.Markup.UnitTests.csproj
  37. 3
      tests/Avalonia.Markup.Xaml.UnitTests/Avalonia.Markup.Xaml.UnitTests.csproj
  38. 2
      tests/Avalonia.ReactiveUI.UnitTests/Avalonia.ReactiveUI.UnitTests.csproj
  39. 2
      tests/Avalonia.Skia.RenderTests/Avalonia.Skia.RenderTests.csproj
  40. 2
      tests/Avalonia.Skia.UnitTests/Avalonia.Skia.UnitTests.csproj
  41. 2
      tests/Avalonia.Styling.UnitTests/Avalonia.Styling.UnitTests.csproj
  42. 2
      tests/Avalonia.Visuals.UnitTests/Avalonia.Visuals.UnitTests.csproj
  43. 18
      tests/Avalonia.Visuals.UnitTests/Rendering/ImmediateRendererTests.cs
  44. 2
      tests/Avalonia.Visuals.UnitTests/VisualTree/TransformedBoundsTests.cs

17
azure-pipelines.yml

@ -1,3 +1,6 @@
variables:
MSBuildEnableWorkloadResolver: 'false'
jobs: jobs:
- job: Linux - job: Linux
pool: pool:
@ -9,9 +12,9 @@ jobs:
version: 3.1.414 version: 3.1.414
- task: UseDotNet@2 - task: UseDotNet@2
displayName: 'Use .NET Core SDK 5.0.402' displayName: 'Use .NET Core SDK 6.0.100'
inputs: inputs:
version: 5.0.402 version: 6.0.100
- task: CmdLine@2 - task: CmdLine@2
displayName: 'Run Build' displayName: 'Run Build'
@ -40,9 +43,9 @@ jobs:
version: 3.1.414 version: 3.1.414
- task: UseDotNet@2 - task: UseDotNet@2
displayName: 'Use .NET Core SDK 5.0.402' displayName: 'Use .NET Core SDK 6.0.100'
inputs: inputs:
version: 5.0.402 version: 6.0.100
- task: CmdLine@2 - task: CmdLine@2
displayName: 'Install Mono 5.18' displayName: 'Install Mono 5.18'
@ -56,7 +59,7 @@ jobs:
inputs: inputs:
script: | script: |
export PATH="`pwd`/sdk:$PATH" 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 - task: Xcode@5
inputs: inputs:
@ -110,9 +113,9 @@ jobs:
version: 3.1.414 version: 3.1.414
- task: UseDotNet@2 - task: UseDotNet@2
displayName: 'Use .NET Core SDK 5.0.402' displayName: 'Use .NET Core SDK 6.0.100'
inputs: inputs:
version: 5.0.402 version: 6.0.100
- task: CmdLine@2 - task: CmdLine@2
displayName: 'Install Nuke' displayName: 'Install Nuke'

4
build/HarfBuzzSharp.props

@ -1,6 +1,6 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup> <ItemGroup>
<PackageReference Include="HarfBuzzSharp" Version="2.6.1.7" /> <PackageReference Include="HarfBuzzSharp" Version="2.8.2-preview.155" />
<PackageReference Condition="'$(IncludeLinuxSkia)' == 'true'" Include="HarfBuzzSharp.NativeAssets.Linux" Version="2.6.1.7" /> <PackageReference Condition="'$(IncludeLinuxSkia)' == 'true'" Include="HarfBuzzSharp.NativeAssets.Linux" Version="2.8.2-preview.155" />
</ItemGroup> </ItemGroup>
</Project> </Project>

2
build/MicroCom.targets

@ -15,7 +15,7 @@
Inputs="@(AvnComIdl);$(MSBuildThisFileDirectory)../src/tools/MicroComGenerator/**/*.cs" Inputs="@(AvnComIdl);$(MSBuildThisFileDirectory)../src/tools/MicroComGenerator/**/*.cs"
Outputs="%(AvnComIdl.OutputFile)"> Outputs="%(AvnComIdl.OutputFile)">
<Message Importance="high" Text="Generating file %(AvnComIdl.OutputFile) from @(AvnComIdl)" /> <Message Importance="high" Text="Generating file %(AvnComIdl.OutputFile) from @(AvnComIdl)" />
<Exec Command="dotnet &quot;$(MSBuildThisFileDirectory)../src/tools/MicroComGenerator/bin/$(Configuration)/netcoreapp3.1/MicroComGenerator.dll&quot; -i @(AvnComIdl) --cs %(AvnComIdl.OutputFile)" <Exec Command="dotnet &quot;$(MSBuildThisFileDirectory)../src/tools/MicroComGenerator/bin/$(Configuration)/net6.0/MicroComGenerator.dll&quot; -i @(AvnComIdl) --cs %(AvnComIdl.OutputFile)"
LogStandardErrorAsError="true" /> LogStandardErrorAsError="true" />
<ItemGroup> <ItemGroup>
<!-- Remove and re-add generated file, this is needed for the clean build --> <!-- Remove and re-add generated file, this is needed for the clean build -->

4
build/SkiaSharp.props

@ -1,6 +1,6 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup> <ItemGroup>
<PackageReference Include="SkiaSharp" Version="2.80.2" /> <PackageReference Include="SkiaSharp" Version="2.88.0-preview.155" />
<PackageReference Condition="'$(IncludeLinuxSkia)' == 'true'" Include="SkiaSharp.NativeAssets.Linux" Version="2.80.2" /> <PackageReference Condition="'$(IncludeLinuxSkia)' == 'true'" Include="SkiaSharp.NativeAssets.Linux" Version="2.88.0-preview.155" />
</ItemGroup> </ItemGroup>
</Project> </Project>

6
global.json

@ -1,7 +1,7 @@
{ {
"sdk": { "sdk": {
"version": "5.0.402" "version": "6.0.100"
}, },
"msbuild-sdks": { "msbuild-sdks": {
"Microsoft.Build.Traversal": "1.0.43", "Microsoft.Build.Traversal": "1.0.43",
"MSBuild.Sdk.Extras": "2.0.54", "MSBuild.Sdk.Extras": "2.0.54",

15
native/Avalonia.Native/src/OSX/window.mm

@ -2398,11 +2398,18 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent
{ {
case NSEventTypeLeftMouseDown: case NSEventTypeLeftMouseDown:
{ {
auto avnPoint = [AvnView toAvnPoint:[event locationInWindow]]; AvnView* view = _parent->View;
auto point = [self translateLocalPoint:avnPoint]; NSPoint windowPoint = [event locationInWindow];
AvnVector delta; 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; break;

9
nukebuild/_build.csproj

@ -15,6 +15,7 @@
<PackageReference Include="JetBrains.dotMemoryUnit" Version="3.0.20171219.105559" /> <PackageReference Include="JetBrains.dotMemoryUnit" Version="3.0.20171219.105559" />
<PackageReference Include="vswhere" Version="2.6.7" Condition=" '$(OS)' == 'Windows_NT' " /> <PackageReference Include="vswhere" Version="2.6.7" Condition=" '$(OS)' == 'Windows_NT' " />
<PackageReference Include="ILRepack.NETStandard" Version="2.0.4" /> <PackageReference Include="ILRepack.NETStandard" Version="2.0.4" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="3.7.0" />
<!-- Keep in sync with Avalonia.Build.Tasks --> <!-- Keep in sync with Avalonia.Build.Tasks -->
<PackageReference Include="Mono.Cecil" Version="0.11.2" /> <PackageReference Include="Mono.Cecil" Version="0.11.2" />
</ItemGroup> </ItemGroup>
@ -36,10 +37,10 @@
<None Include="..\GitVersion.yml" Condition="Exists('..\GitVersion.yml')" /> <None Include="..\GitVersion.yml" Condition="Exists('..\GitVersion.yml')" />
<Compile Remove="Numerge/**/*.*" /> <Compile Remove="Numerge/**/*.*" />
<Compile Include="Numerge/Numerge/**/*.cs" /> <Compile Include="Numerge/Numerge/**/*.cs" />
</ItemGroup> <Compile Include="..\src\tools\MicroComGenerator\**\*.cs" Exclude="..\src\tools\MicroComGenerator\obj\**">
<Link>MicroComGenerator\%(Filename)%(Extension)</Link>
<ItemGroup> </Compile>
<ProjectReference Include="..\src\tools\MicroComGenerator\MicroComGenerator.csproj" /> <Compile Remove="..\src\tools\MicroComGenerator\Program.cs" />
</ItemGroup> </ItemGroup>
</Project> </Project>

2
samples/BindingDemo/BindingDemo.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>net6.0</TargetFramework>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\src\Avalonia.Diagnostics\Avalonia.Diagnostics.csproj" /> <ProjectReference Include="..\..\src\Avalonia.Diagnostics\Avalonia.Diagnostics.csproj" />

2
samples/ControlCatalog.NetCore/ControlCatalog.NetCore.csproj

@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<OutputType>WinExe</OutputType> <OutputType>WinExe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
</PropertyGroup> </PropertyGroup>

2
samples/PlatformSanityChecks/PlatformSanityChecks.csproj

@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>net6.0</TargetFramework>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

2
samples/Previewer/Previewer.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>net6.0</TargetFramework>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Compile Update="**\*.xaml.cs"> <Compile Update="**\*.xaml.cs">

2
samples/RemoteDemo/RemoteDemo.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>net6.0</TargetFramework>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\ControlCatalog\ControlCatalog.csproj" /> <ProjectReference Include="..\ControlCatalog\ControlCatalog.csproj" />

2
samples/RenderDemo/RenderDemo.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>net6.0</TargetFramework>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Compile Include="..\..\src\Avalonia.Visuals\Rendering\SceneGraph\LineBoundsHelper.cs" Link="LineBoundsHelper.cs" /> <Compile Include="..\..\src\Avalonia.Visuals\Rendering\SceneGraph\LineBoundsHelper.cs" Link="LineBoundsHelper.cs" />

2
samples/Sandbox/Sandbox.csproj

@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<OutputType>WinExe</OutputType> <OutputType>WinExe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
</PropertyGroup> </PropertyGroup>

2
samples/VirtualizationDemo/VirtualizationDemo.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>net6.0</TargetFramework>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\src\Avalonia.Diagnostics\Avalonia.Diagnostics.csproj" /> <ProjectReference Include="..\..\src\Avalonia.Diagnostics\Avalonia.Diagnostics.csproj" />

2
src/Avalonia.Controls/MenuItem.cs

@ -387,7 +387,7 @@ namespace Avalonia.Controls
parent = parent.Parent; parent = parent.Parent;
} }
_isEmbeddedInMenu = parent is IMenu; _isEmbeddedInMenu = parent.FindLogicalAncestorOfType<IMenu>(true) != null;
} }
protected override void OnDetachedFromLogicalTree(LogicalTreeAttachmentEventArgs e) protected override void OnDetachedFromLogicalTree(LogicalTreeAttachmentEventArgs e)

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

@ -29,7 +29,7 @@ namespace Avalonia.Controls.Platform
if (platform == null) 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(); return s_designerMode ? null : platform.CreateTrayIcon();
@ -45,7 +45,7 @@ namespace Avalonia.Controls.Platform
throw new Exception("Could not CreateWindow(): IWindowingPlatform is not registered."); 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() public static IWindowImpl CreateEmbeddableWindow()

7
src/Avalonia.Input/Gestures.cs

@ -30,7 +30,7 @@ namespace Avalonia.Input
"ScrollGestureEnded", RoutingStrategies.Bubble, typeof(Gestures)); "ScrollGestureEnded", RoutingStrategies.Bubble, typeof(Gestures));
#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type. #pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
private static WeakReference<IInteractive> s_lastPress = new WeakReference<IInteractive>(null); private static readonly WeakReference<IInteractive> s_lastPress = new WeakReference<IInteractive>(null);
#pragma warning restore CS8625 // Cannot convert null literal to non-nullable reference type. #pragma warning restore CS8625 // Cannot convert null literal to non-nullable reference type.
static Gestures() static Gestures()
@ -86,16 +86,15 @@ namespace Avalonia.Input
#pragma warning restore CS0618 // Type or member is obsolete #pragma warning restore CS0618 // Type or member is obsolete
if (clickCount <= 1) if (clickCount <= 1)
{ {
s_lastPress = new WeakReference<IInteractive>(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) if (s_lastPress.TryGetTarget(out var target) && target == e.Source)
{ {
e.Source.RaiseEvent(new TappedEventArgs(DoubleTappedEvent, e)); e.Source.RaiseEvent(new TappedEventArgs(DoubleTappedEvent, e));
} }
} }
} }
} }

2
src/Avalonia.Input/InputElement.cs

@ -632,7 +632,7 @@ namespace Avalonia.Input
} }
else if (change.Property == IsKeyboardFocusWithinProperty) else if (change.Property == IsKeyboardFocusWithinProperty)
{ {
PseudoClasses.Set(":focus-within", _isKeyboardFocusWithin); PseudoClasses.Set(":focus-within", change.NewValue.GetValueOrDefault<bool>());
} }
} }

25
src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs

@ -20,6 +20,7 @@ namespace Avalonia.Rendering
{ {
private readonly IVisual _root; private readonly IVisual _root;
private readonly IRenderRoot _renderRoot; private readonly IRenderRoot _renderRoot;
private bool _updateTransformedBounds = true;
private IRenderTarget _renderTarget; private IRenderTarget _renderTarget;
/// <summary> /// <summary>
@ -34,6 +35,13 @@ namespace Avalonia.Rendering
_renderRoot = root as IRenderRoot; _renderRoot = root as IRenderRoot;
} }
private ImmediateRenderer(IVisual root, bool updateTransformedBounds)
{
_root = root ?? throw new ArgumentNullException(nameof(root));
_renderRoot = root as IRenderRoot;
_updateTransformedBounds = updateTransformedBounds;
}
/// <inheritdoc/> /// <inheritdoc/>
public bool DrawFps { get; set; } public bool DrawFps { get; set; }
@ -98,7 +106,7 @@ namespace Avalonia.Rendering
/// <param name="target">The render target.</param> /// <param name="target">The render target.</param>
public static void Render(IVisual visual, IRenderTarget 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))) using (var context = new DrawingContext(target.CreateDrawingContext(renderer)))
{ {
renderer.Render(context, visual, visual.Bounds); renderer.Render(context, visual, visual.Bounds);
@ -112,7 +120,7 @@ namespace Avalonia.Rendering
/// <param name="context">The drawing context.</param> /// <param name="context">The drawing context.</param>
public static void Render(IVisual visual, DrawingContext 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); renderer.Render(context, visual, visual.Bounds);
} }
@ -193,6 +201,12 @@ namespace Avalonia.Rendering
Render(new DrawingContext(context), visual, visual.Bounds); 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) private static void ClearTransformedBounds(IVisual visual)
{ {
foreach (var e in visual.GetSelfAndVisualDescendants()) foreach (var e in visual.GetSelfAndVisualDescendants())
@ -308,7 +322,8 @@ namespace Avalonia.Rendering
new TransformedBounds(bounds, new Rect(), context.CurrentContainerTransform); new TransformedBounds(bounds, new Rect(), context.CurrentContainerTransform);
#pragma warning restore 0618 #pragma warning restore 0618
visual.TransformedBounds = transformed; if (_updateTransformedBounds)
visual.TransformedBounds = transformed;
foreach (var child in visual.VisualChildren.OrderBy(x => x, ZIndexComparer.Instance)) foreach (var child in visual.VisualChildren.OrderBy(x => x, ZIndexComparer.Instance))
{ {
@ -321,7 +336,7 @@ namespace Avalonia.Rendering
: clipRect; : clipRect;
Render(context, child, childClipRect); Render(context, child, childClipRect);
} }
else else if (_updateTransformedBounds)
{ {
ClearTransformedBounds(child); ClearTransformedBounds(child);
} }
@ -329,7 +344,7 @@ namespace Avalonia.Rendering
} }
} }
if (!visual.IsVisible) if (!visual.IsVisible && _updateTransformedBounds)
{ {
ClearTransformedBounds(visual); ClearTransformedBounds(visual);
} }

2
src/Skia/Avalonia.Skia/Gpu/OpenGl/GlSkiaGpu.cs

@ -25,7 +25,7 @@ namespace Avalonia.Skia
GRGlInterface.CreateOpenGl(proc => context.GlInterface.GetProcAddress(proc)) : GRGlInterface.CreateOpenGl(proc => context.GlInterface.GetProcAddress(proc)) :
GRGlInterface.CreateGles(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) if (maxResourceBytes.HasValue)
{ {
_grContext.SetResourceCacheLimit(maxResourceBytes.Value); _grContext.SetResourceCacheLimit(maxResourceBytes.Value);

8
src/tools/MicroComGenerator/MicroComGenerator.csproj

@ -1,8 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>net6.0</TargetFramework>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="CommandLineParser" Version="2.8.0" /> <PackageReference Include="CommandLineParser" Version="2.8.0" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="3.7.0" /> <PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="3.7.0" />

2
tests/Avalonia.Animation.UnitTests/Avalonia.Animation.UnitTests.csproj

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0"> <Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netcoreapp3.1;net47</TargetFrameworks> <TargetFramework>net6.0</TargetFramework>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<IsTestProject>true</IsTestProject> <IsTestProject>true</IsTestProject>
</PropertyGroup> </PropertyGroup>

2
tests/Avalonia.Base.UnitTests/Avalonia.Base.UnitTests.csproj

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0"> <Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netcoreapp3.1;net47</TargetFrameworks> <TargetFramework>net6.0</TargetFramework>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<IsTestProject>true</IsTestProject> <IsTestProject>true</IsTestProject>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>

2
tests/Avalonia.Benchmarks/Avalonia.Benchmarks.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<IsPackable>false</IsPackable> <IsPackable>false</IsPackable>
</PropertyGroup> </PropertyGroup>

2
tests/Avalonia.Controls.DataGrid.UnitTests/Avalonia.Controls.DataGrid.UnitTests.csproj

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0"> <Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netcoreapp3.1;net47</TargetFrameworks> <TargetFramework>net6.0</TargetFramework>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<IsTestProject>true</IsTestProject> <IsTestProject>true</IsTestProject>

2
tests/Avalonia.Controls.UnitTests/Avalonia.Controls.UnitTests.csproj

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0"> <Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netcoreapp3.1;net47</TargetFrameworks> <TargetFramework>net6.0</TargetFramework>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<IsTestProject>true</IsTestProject> <IsTestProject>true</IsTestProject>

2
tests/Avalonia.DesignerSupport.TestApp/Avalonia.DesignerSupport.TestApp.csproj

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<IsPackable>false</IsPackable> <IsPackable>false</IsPackable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

4
tests/Avalonia.DesignerSupport.Tests/Avalonia.DesignerSupport.Tests.csproj

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0"> <Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netcoreapp3.1</TargetFrameworks> <TargetFramework>net6.0</TargetFramework>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
</PropertyGroup> </PropertyGroup>
<Import Project="..\..\build\UnitTests.NetCore.targets" /> <Import Project="..\..\build\UnitTests.NetCore.targets" />
@ -18,4 +18,4 @@
<ItemGroup> <ItemGroup>
<Folder Include="Properties\" /> <Folder Include="Properties\" />
</ItemGroup> </ItemGroup>
</Project> </Project>

8
tests/Avalonia.DesignerSupport.Tests/DesignerSupportTests.cs

@ -29,25 +29,25 @@ namespace Avalonia.DesignerSupport.Tests
[SkippableTheory, [SkippableTheory,
InlineData( InlineData(
@"..\..\..\..\..\tests/Avalonia.DesignerSupport.TestApp/bin/$BUILD/netcoreapp3.1/", @"..\..\..\..\..\tests/Avalonia.DesignerSupport.TestApp/bin/$BUILD/net6.0/",
"Avalonia.DesignerSupport.TestApp", "Avalonia.DesignerSupport.TestApp",
"Avalonia.DesignerSupport.TestApp.dll", "Avalonia.DesignerSupport.TestApp.dll",
@"..\..\..\..\..\tests\Avalonia.DesignerSupport.TestApp\MainWindow.xaml", @"..\..\..\..\..\tests\Avalonia.DesignerSupport.TestApp\MainWindow.xaml",
"win32"), "win32"),
InlineData( InlineData(
@"..\..\..\..\..\samples\ControlCatalog.NetCore\bin\$BUILD\netcoreapp3.1\", @"..\..\..\..\..\samples\ControlCatalog.NetCore\bin\$BUILD\net6.0\",
"ControlCatalog.NetCore", "ControlCatalog.NetCore",
"ControlCatalog.dll", "ControlCatalog.dll",
@"..\..\..\..\..\samples\ControlCatalog\MainWindow.xaml", @"..\..\..\..\..\samples\ControlCatalog\MainWindow.xaml",
"win32"), "win32"),
InlineData( InlineData(
@"..\..\..\..\..\tests/Avalonia.DesignerSupport.TestApp/bin/$BUILD/netcoreapp3.1/", @"..\..\..\..\..\tests/Avalonia.DesignerSupport.TestApp/bin/$BUILD/net6.0/",
"Avalonia.DesignerSupport.TestApp", "Avalonia.DesignerSupport.TestApp",
"Avalonia.DesignerSupport.TestApp.dll", "Avalonia.DesignerSupport.TestApp.dll",
@"..\..\..\..\..\tests\Avalonia.DesignerSupport.TestApp\MainWindow.xaml", @"..\..\..\..\..\tests\Avalonia.DesignerSupport.TestApp\MainWindow.xaml",
"avalonia-remote"), "avalonia-remote"),
InlineData( InlineData(
@"..\..\..\..\..\samples\ControlCatalog.NetCore\bin\$BUILD\netcoreapp3.1\", @"..\..\..\..\..\samples\ControlCatalog.NetCore\bin\$BUILD\net6.0\",
"ControlCatalog.NetCore", "ControlCatalog.NetCore",
"ControlCatalog.dll", "ControlCatalog.dll",
@"..\..\..\..\..\samples\ControlCatalog\MainWindow.xaml", @"..\..\..\..\..\samples\ControlCatalog\MainWindow.xaml",

2
tests/Avalonia.Direct2D1.RenderTests/Avalonia.Direct2D1.RenderTests.csproj

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netcoreapp3.1</TargetFrameworks> <TargetFramework>net6.0</TargetFramework>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Compile Include="..\Avalonia.RenderTests\**\*.cs" /> <Compile Include="..\Avalonia.RenderTests\**\*.cs" />

2
tests/Avalonia.Direct2D1.UnitTests/Avalonia.Direct2D1.UnitTests.csproj

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0"> <Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netcoreapp3.1</TargetFrameworks> <TargetFramework>net6.0</TargetFramework>
</PropertyGroup> </PropertyGroup>
<Import Project="..\..\build\UnitTests.NetCore.targets" /> <Import Project="..\..\build\UnitTests.NetCore.targets" />
<Import Project="..\..\build\Moq.props" /> <Import Project="..\..\build\Moq.props" />

2
tests/Avalonia.Input.UnitTests/Avalonia.Input.UnitTests.csproj

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0"> <Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netcoreapp3.1;net47</TargetFrameworks> <TargetFramework>net6.0</TargetFramework>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<IsTestProject>true</IsTestProject> <IsTestProject>true</IsTestProject>
</PropertyGroup> </PropertyGroup>

2
tests/Avalonia.Interactivity.UnitTests/Avalonia.Interactivity.UnitTests.csproj

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0"> <Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netcoreapp3.1;net47</TargetFrameworks> <TargetFramework>net6.0</TargetFramework>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<IsTestProject>true</IsTestProject> <IsTestProject>true</IsTestProject>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>

2
tests/Avalonia.Layout.UnitTests/Avalonia.Layout.UnitTests.csproj

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0"> <Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netcoreapp3.1</TargetFrameworks> <TargetFramework>net6.0</TargetFramework>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
</PropertyGroup> </PropertyGroup>
<Import Project="..\..\build\UnitTests.NetCore.targets" /> <Import Project="..\..\build\UnitTests.NetCore.targets" />

2
tests/Avalonia.Markup.UnitTests/Avalonia.Markup.UnitTests.csproj

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0"> <Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netcoreapp3.1;net47</TargetFrameworks> <TargetFramework>net6.0</TargetFramework>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<IsTestProject>true</IsTestProject> <IsTestProject>true</IsTestProject>
</PropertyGroup> </PropertyGroup>

3
tests/Avalonia.Markup.Xaml.UnitTests/Avalonia.Markup.Xaml.UnitTests.csproj

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0"> <Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netcoreapp3.1;net47</TargetFrameworks> <TargetFrameworks>net6.0;net47</TargetFrameworks>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<IsTestProject>true</IsTestProject> <IsTestProject>true</IsTestProject>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
@ -25,7 +25,6 @@
<ProjectReference Include="..\..\src\Avalonia.Visuals\Avalonia.Visuals.csproj" /> <ProjectReference Include="..\..\src\Avalonia.Visuals\Avalonia.Visuals.csproj" />
<ProjectReference Include="..\..\src\Avalonia.Styling\Avalonia.Styling.csproj" /> <ProjectReference Include="..\..\src\Avalonia.Styling\Avalonia.Styling.csproj" />
<ProjectReference Include="..\..\src\Avalonia.Themes.Default\Avalonia.Themes.Default.csproj" /> <ProjectReference Include="..\..\src\Avalonia.Themes.Default\Avalonia.Themes.Default.csproj" />
<ProjectReference Include="..\Avalonia.Base.UnitTests\Avalonia.Base.UnitTests.csproj" />
<ProjectReference Include="..\Avalonia.UnitTests\Avalonia.UnitTests.csproj" /> <ProjectReference Include="..\Avalonia.UnitTests\Avalonia.UnitTests.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

2
tests/Avalonia.ReactiveUI.UnitTests/Avalonia.ReactiveUI.UnitTests.csproj

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<SignAssembly>false</SignAssembly> <SignAssembly>false</SignAssembly>
</PropertyGroup> </PropertyGroup>
<Import Project="..\..\build\UnitTests.NetCore.targets" /> <Import Project="..\..\build\UnitTests.NetCore.targets" />

2
tests/Avalonia.Skia.RenderTests/Avalonia.Skia.RenderTests.csproj

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netcoreapp3.1</TargetFrameworks> <TargetFramework>net6.0</TargetFramework>
<DefineConstants>AVALONIA_SKIA;AVALONIA_SKIA_SKIP_FAIL</DefineConstants> <DefineConstants>AVALONIA_SKIA;AVALONIA_SKIA_SKIP_FAIL</DefineConstants>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

2
tests/Avalonia.Skia.UnitTests/Avalonia.Skia.UnitTests.csproj

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0"> <Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netcoreapp3.1</TargetFrameworks> <TargetFramework>net6.0</TargetFramework>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="..\..\build\UnitTests.NetCore.targets" /> <Import Project="..\..\build\UnitTests.NetCore.targets" />

2
tests/Avalonia.Styling.UnitTests/Avalonia.Styling.UnitTests.csproj

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0"> <Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netcoreapp3.1;net47</TargetFrameworks> <TargetFramework>net6.0</TargetFramework>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<NoWarn>CS0067</NoWarn> <NoWarn>CS0067</NoWarn>
<IsTestProject>true</IsTestProject> <IsTestProject>true</IsTestProject>

2
tests/Avalonia.Visuals.UnitTests/Avalonia.Visuals.UnitTests.csproj

@ -1,6 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0"> <Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netcoreapp3.1;net47</TargetFrameworks> <TargetFramework>net6.0</TargetFramework>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<IsTestProject>true</IsTestProject> <IsTestProject>true</IsTestProject>
</PropertyGroup> </PropertyGroup>

18
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<IRenderTarget>(x =>
x.CreateDrawingContext(It.IsAny<IVisualBrushRenderer>()) == Mock.Of<IDrawingContextImpl>());
ImmediateRenderer.Render(target, renderTarget);
Assert.Equal(expected, target.TransformedBounds);
}
}
private class TestControl : Control private class TestControl : Control
{ {
public bool Rendered { get; private set; } public bool Rendered { get; private set; }

2
tests/Avalonia.Visuals.UnitTests/VisualTree/TransformedBoundsTests.cs

@ -40,7 +40,7 @@ namespace Avalonia.Visuals.UnitTests.VisualTree
tree.Measure(Size.Infinity); tree.Measure(Size.Infinity);
tree.Arrange(new Rect(0, 0, 100, 100)); tree.Arrange(new Rect(0, 0, 100, 100));
ImmediateRenderer.Render(tree, context); ImmediateRenderer.Render(tree, context, true);
var track = control.GetObservable(Visual.TransformedBoundsProperty); var track = control.GetObservable(Visual.TransformedBoundsProperty);
var results = new List<TransformedBounds?>(); var results = new List<TransformedBounds?>();

Loading…
Cancel
Save