Browse Source

Merge branch 'master' into fixes/TextLineCaretNavigation

danwalmsley 5 years ago
parent
commit
d4b424ddf3
59 changed files with 150 additions and 39 deletions
  1. 1 0
      Avalonia.sln
  2. 2 0
      NuGet.Config
  3. 12 0
      build/ApiDiff.props
  4. 1 0
      src/Avalonia.Animation/ApiCompatBaseline.txt
  5. 2 1
      src/Avalonia.Animation/Avalonia.Animation.csproj
  6. 3 0
      src/Avalonia.Base/ApiCompatBaseline.txt
  7. 2 1
      src/Avalonia.Base/Avalonia.Base.csproj
  8. 1 0
      src/Avalonia.Controls.DataGrid/ApiCompatBaseline.txt
  9. 1 0
      src/Avalonia.Controls.DataGrid/Avalonia.Controls.DataGrid.csproj
  10. 20 0
      src/Avalonia.Controls/ApiCompatBaseline.txt
  11. 2 1
      src/Avalonia.Controls/Avalonia.Controls.csproj
  12. 1 7
      src/Avalonia.Controls/MenuItem.cs
  13. 1 0
      src/Avalonia.DesignerSupport/ApiCompatBaseline.txt
  14. 2 0
      src/Avalonia.DesignerSupport/Avalonia.DesignerSupport.csproj
  15. 1 0
      src/Avalonia.Desktop/ApiCompatBaseline.txt
  16. 2 0
      src/Avalonia.Desktop/Avalonia.Desktop.csproj
  17. 1 0
      src/Avalonia.DesktopRuntime/ApiCompatBaseline.txt
  18. 1 0
      src/Avalonia.DesktopRuntime/Avalonia.DesktopRuntime.csproj
  19. 1 0
      src/Avalonia.Diagnostics/ApiCompatBaseline.txt
  20. 2 0
      src/Avalonia.Diagnostics/Avalonia.Diagnostics.csproj
  21. 1 0
      src/Avalonia.Dialogs/ApiCompatBaseline.txt
  22. 2 0
      src/Avalonia.Dialogs/Avalonia.Dialogs.csproj
  23. 2 3
      src/Avalonia.FreeDesktop/Avalonia.FreeDesktop.csproj
  24. 2 1
      src/Avalonia.Headless/Avalonia.Headless.csproj
  25. 1 0
      src/Avalonia.Input/ApiCompatBaseline.txt
  26. 1 0
      src/Avalonia.Input/Avalonia.Input.csproj
  27. 1 0
      src/Avalonia.Interactivity/ApiCompatBaseline.txt
  28. 1 0
      src/Avalonia.Interactivity/Avalonia.Interactivity.csproj
  29. 1 0
      src/Avalonia.Layout/ApiCompatBaseline.txt
  30. 1 0
      src/Avalonia.Layout/Avalonia.Layout.csproj
  31. 1 0
      src/Avalonia.OpenGL/ApiCompatBaseline.txt
  32. 1 0
      src/Avalonia.OpenGL/Avalonia.OpenGL.csproj
  33. 1 0
      src/Avalonia.ReactiveUI/ApiCompatBaseline.txt
  34. 1 0
      src/Avalonia.ReactiveUI/Avalonia.ReactiveUI.csproj
  35. 1 0
      src/Avalonia.Remote.Protocol/ApiCompatBaseline.txt
  36. 2 0
      src/Avalonia.Remote.Protocol/Avalonia.Remote.Protocol.csproj
  37. 1 0
      src/Avalonia.Styling/ApiCompatBaseline.txt
  38. 1 0
      src/Avalonia.Styling/Avalonia.Styling.csproj
  39. 1 0
      src/Avalonia.Themes.Default/ApiCompatBaseline.txt
  40. 1 0
      src/Avalonia.Themes.Default/Avalonia.Themes.Default.csproj
  41. 1 0
      src/Avalonia.Themes.Fluent/ApiCompatBaseline.txt
  42. 1 0
      src/Avalonia.Themes.Fluent/Avalonia.Themes.Fluent.csproj
  43. 7 7
      src/Avalonia.Themes.Fluent/Button.xaml
  44. 4 4
      src/Avalonia.Themes.Fluent/RepeatButton.xaml
  45. 11 11
      src/Avalonia.Themes.Fluent/ToggleButton.xaml
  46. 12 0
      src/Avalonia.Visuals/ApiCompatBaseline.txt
  47. 1 0
      src/Avalonia.Visuals/Avalonia.Visuals.csproj
  48. 1 0
      src/Linux/Avalonia.LinuxFramebuffer/ApiCompatBaseline.txt
  49. 2 1
      src/Linux/Avalonia.LinuxFramebuffer/Avalonia.LinuxFramebuffer.csproj
  50. 2 1
      src/Markup/Avalonia.Markup.Xaml.Loader/Avalonia.Markup.Xaml.Loader.csproj
  51. 1 1
      src/Markup/Avalonia.Markup.Xaml.Loader/xamlil.github
  52. 15 0
      src/Markup/Avalonia.Markup.Xaml/ApiCompatBaseline.txt
  53. 1 0
      src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj
  54. 1 0
      src/Markup/Avalonia.Markup/ApiCompatBaseline.txt
  55. 1 0
      src/Markup/Avalonia.Markup/Avalonia.Markup.csproj
  56. 1 0
      src/Skia/Avalonia.Skia/ApiCompatBaseline.txt
  57. 1 0
      src/Skia/Avalonia.Skia/Avalonia.Skia.csproj
  58. 3 0
      src/Windows/Avalonia.Win32/ApiCompatBaseline.txt
  59. 1 0
      src/Windows/Avalonia.Win32/Avalonia.Win32.csproj

+ 1 - 0
Avalonia.sln

@@ -150,6 +150,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Props", "Props", "{F3AC8BC1
 		build\System.Memory.props = build\System.Memory.props
 		build\UnitTests.NetFX.props = build\UnitTests.NetFX.props
 		build\XUnit.props = build\XUnit.props
+		build\ApiDiff.props = build\ApiDiff.props
 	EndProjectSection
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Targets", "Targets", "{4D6FAF79-58B4-482F-9122-0668C346364C}"

+ 2 - 0
NuGet.Config

@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
+
 <configuration>
   <packageSources>
     <clear />
     <add key="api.nuget.org" value="https://api.nuget.org/v3/index.json" />
+      <add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" />
   </packageSources>
 </configuration>

+ 12 - 0
build/ApiDiff.props

@@ -0,0 +1,12 @@
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ApiContractPackageVersion>0.10.0-preview1</ApiContractPackageVersion>
+    <NugetPackageName Condition="'$(PackageId)' != ''">$(PackageId)</NugetPackageName>
+    <NugetPackageName Condition="'$(PackageId)' == ''">Avalonia</NugetPackageName>
+  </PropertyGroup>
+    <ItemGroup>
+      <PackageDownload Include="$(NugetPackageName)" Version="[$(ApiContractPackageVersion)]" />
+      <PackageReference Include="Microsoft.DotNet.ApiCompat" Version="5.0.0-beta.20372.2" PrivateAssets="All" />
+    <ResolvedMatchingContract Include="$(NuGetPackageRoot)\$(NugetPackageName.ToLower())\$(ApiContractPackageVersion)\lib\$(TargetFramework)\$(AssemblyName).dll" />
+    </ItemGroup>
+</Project>

+ 1 - 0
src/Avalonia.Animation/ApiCompatBaseline.txt

@@ -0,0 +1 @@
+Total Issues: 0

+ 2 - 1
src/Avalonia.Animation/Avalonia.Animation.csproj

@@ -1,9 +1,10 @@
 <Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <TargetFramework>netstandard2.0</TargetFramework>
+    <TargetFramework>netstandard2.0</TargetFramework>    
   </PropertyGroup>
   <ItemGroup>
     <ProjectReference Include="..\Avalonia.Base\Avalonia.Base.csproj" />
   </ItemGroup>
   <Import Project="..\..\build\Rx.props" />
+  <Import Project="..\..\build\ApiDiff.props" />
 </Project>

+ 3 - 0
src/Avalonia.Base/ApiCompatBaseline.txt

@@ -0,0 +1,3 @@
+Compat issues with assembly Avalonia.Base:
+MembersMustExist : Member 'public void Avalonia.Threading.AvaloniaSynchronizationContext..ctor()' does not exist in the implementation but it does exist in the contract.
+Total Issues: 1

+ 2 - 1
src/Avalonia.Base/Avalonia.Base.csproj

@@ -3,7 +3,7 @@
     <TargetFramework>netstandard2.0</TargetFramework>
     <AssemblyName>Avalonia.Base</AssemblyName>
     <RootNamespace>Avalonia</RootNamespace>
-    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
+    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>    
   </PropertyGroup>
   <ItemGroup>
     <ProjectReference Include="..\Avalonia.Build.Tasks\Avalonia.Build.Tasks.csproj"/>
@@ -13,4 +13,5 @@
   <Import Project="..\..\build\Rx.props" />
   <Import Project="..\..\build\JetBrains.Annotations.props" />
   <Import Project="..\..\build\System.Memory.props" />
+  <Import Project="..\..\build\ApiDiff.props" />
 </Project>

+ 1 - 0
src/Avalonia.Controls.DataGrid/ApiCompatBaseline.txt

@@ -0,0 +1 @@
+Total Issues: 0

+ 1 - 0
src/Avalonia.Controls.DataGrid/Avalonia.Controls.DataGrid.csproj

@@ -22,4 +22,5 @@
   <Import Project="..\..\build\EmbedXaml.props" />
   <Import Project="..\..\build\JetBrains.Annotations.props" />
   <Import Project="..\..\build\BuildTargets.targets" />
+  <Import Project="..\..\build\ApiDiff.props" />
 </Project>

+ 20 - 0
src/Avalonia.Controls/ApiCompatBaseline.txt

@@ -0,0 +1,20 @@
+Compat issues with assembly Avalonia.Controls:
+MembersMustExist : Member 'public Avalonia.Controls.TextBlock Avalonia.Controls.TextBlock Avalonia.Controls.TimePicker._periodText' does not exist in the implementation but it does exist in the contract.
+MembersMustExist : Member 'public void Avalonia.Controls.Chrome.TitleBar..ctor(Avalonia.Controls.Window)' does not exist in the implementation but it does exist in the contract.
+MembersMustExist : Member 'public void Avalonia.Controls.Chrome.TitleBar.Attach()' does not exist in the implementation but it does exist in the contract.
+MembersMustExist : Member 'public void Avalonia.Controls.Chrome.TitleBar.Detach()' does not exist in the implementation but it does exist in the contract.
+MembersMustExist : Member 'public System.Double Avalonia.Controls.Embedding.Offscreen.OffscreenTopLevelImplBase.Scaling.get()' does not exist in the implementation but it does exist in the contract.
+MembersMustExist : Member 'public void Avalonia.Controls.Embedding.Offscreen.OffscreenTopLevelImplBase.Scaling.set(System.Double)' does not exist in the implementation but it does exist in the contract.
+MembersMustExist : Member 'public Avalonia.Controls.Primitives.ChromeOverlayLayer Avalonia.Controls.Primitives.ChromeOverlayLayer.GetOverlayLayer(Avalonia.VisualTree.IVisual)' does not exist in the implementation but it does exist in the contract.
+MembersMustExist : Member 'public System.Boolean Avalonia.Controls.Templates.FuncDataTemplate.SupportsRecycling.get()' does not exist in the implementation but it does exist in the contract.
+InterfacesShouldHaveSameMembers : Interface member 'public System.Boolean Avalonia.Controls.Templates.IDataTemplate.SupportsRecycling' is present in the contract but not in the implementation.
+InterfacesShouldHaveSameMembers : Interface member 'public System.Boolean Avalonia.Controls.Templates.IDataTemplate.SupportsRecycling.get()' is present in the contract but not in the implementation.
+MembersMustExist : Member 'public System.Boolean Avalonia.Controls.Templates.IDataTemplate.SupportsRecycling.get()' does not exist in the implementation but it does exist in the contract.
+InterfacesShouldHaveSameMembers : Interface member 'public System.Double Avalonia.Platform.ITopLevelImpl.RenderScaling' is present in the implementation but not in the contract.
+InterfacesShouldHaveSameMembers : Interface member 'public System.Double Avalonia.Platform.ITopLevelImpl.Scaling' is present in the contract but not in the implementation.
+InterfacesShouldHaveSameMembers : Interface member 'public System.Double Avalonia.Platform.ITopLevelImpl.RenderScaling.get()' is present in the implementation but not in the contract.
+InterfacesShouldHaveSameMembers : Interface member 'public System.Double Avalonia.Platform.ITopLevelImpl.Scaling.get()' is present in the contract but not in the implementation.
+MembersMustExist : Member 'public System.Double Avalonia.Platform.ITopLevelImpl.Scaling.get()' does not exist in the implementation but it does exist in the contract.
+InterfacesShouldHaveSameMembers : Interface member 'public System.Double Avalonia.Platform.IWindowBaseImpl.DesktopScaling' is present in the implementation but not in the contract.
+InterfacesShouldHaveSameMembers : Interface member 'public System.Double Avalonia.Platform.IWindowBaseImpl.DesktopScaling.get()' is present in the implementation but not in the contract.
+Total Issues: 18

+ 2 - 1
src/Avalonia.Controls/Avalonia.Controls.csproj

@@ -1,6 +1,6 @@
 <Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
-    <TargetFramework>netstandard2.0</TargetFramework>
+    <TargetFramework>netstandard2.0</TargetFramework>    
   </PropertyGroup>
   <ItemGroup>
     <ProjectReference Include="..\Avalonia.Animation\Avalonia.Animation.csproj" />
@@ -14,4 +14,5 @@
   </ItemGroup>
   <Import Project="..\..\build\Rx.props" />
   <Import Project="..\..\build\JetBrains.Annotations.props" />
+  <Import Project="..\..\build\ApiDiff.props" />
 </Project>

+ 1 - 7
src/Avalonia.Controls/MenuItem.cs

@@ -97,7 +97,6 @@ namespace Avalonia.Controls
         private ICommand _command;
         private bool _commandCanExecute = true;
         private Popup _popup;
-        private IDisposable _gridHack;
 
         /// <summary>
         /// Initializes static members of the <see cref="MenuItem"/> class.
@@ -323,9 +322,6 @@ namespace Avalonia.Controls
             {
                 Command.CanExecuteChanged -= CanExecuteChanged;
             }
-
-            _gridHack?.Dispose();
-            _gridHack = null;
         }
 
         protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
@@ -345,9 +341,7 @@ namespace Avalonia.Controls
                 // the WPF codebase:
                 //
                 // https://github.com/dotnet/wpf/blob/89537909bdf36bc918e88b37751add46a8980bb0/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Controls/MenuItem.cs#L2126-L2141
-                _gridHack = Bind(
-                    DefinitionBase.PrivateSharedSizeScopeProperty,
-                    parent.GetBindingObservable(DefinitionBase.PrivateSharedSizeScopeProperty));
+                SetValue(DefinitionBase.PrivateSharedSizeScopeProperty, parent.GetValue(DefinitionBase.PrivateSharedSizeScopeProperty));
             }
         }
 

+ 1 - 0
src/Avalonia.DesignerSupport/ApiCompatBaseline.txt

@@ -0,0 +1 @@
+Total Issues: 0

+ 2 - 0
src/Avalonia.DesignerSupport/Avalonia.DesignerSupport.csproj

@@ -9,6 +9,7 @@
     <Version>0.7.0</Version>
     <NoWarn>CS1591</NoWarn>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <NugetPackageName>Avalonia</NugetPackageName>
   </PropertyGroup>
   <ItemGroup>
     <EmbeddedResource Include="Remote\HtmlTransport\webapp\build\**\*.gz" />
@@ -26,4 +27,5 @@
     <ProjectReference Include="..\Avalonia.Themes.Default\Avalonia.Themes.Default.csproj" />
   </ItemGroup>
   <Import Project="..\..\build\Rx.props" />
+  <Import Project="..\..\build\ApiDiff.props" />
 </Project>

+ 1 - 0
src/Avalonia.Desktop/ApiCompatBaseline.txt

@@ -0,0 +1 @@
+Total Issues: 0

+ 2 - 0
src/Avalonia.Desktop/Avalonia.Desktop.csproj

@@ -11,4 +11,6 @@
       <ProjectReference Include="../../packages/Avalonia/Avalonia.csproj" />
       <ProjectReference Include="../Avalonia.X11/Avalonia.X11.csproj" />
   </ItemGroup>
+  
+  <Import Project="..\..\build\ApiDiff.props" />  
 </Project>

+ 1 - 0
src/Avalonia.DesktopRuntime/ApiCompatBaseline.txt

@@ -0,0 +1 @@
+Total Issues: 0

+ 1 - 0
src/Avalonia.DesktopRuntime/Avalonia.DesktopRuntime.csproj

@@ -17,4 +17,5 @@
   <Import Project="..\..\build\NetCore.props" />
   <Import Project="..\..\build\NetFX.props" />
   <Import Project="..\Shared\PlatformSupport\PlatformSupport.projitems" />
+  <Import Project="..\..\build\ApiDiff.props" />
 </Project>

+ 1 - 0
src/Avalonia.Diagnostics/ApiCompatBaseline.txt

@@ -0,0 +1 @@
+Total Issues: 0

+ 2 - 0
src/Avalonia.Diagnostics/Avalonia.Diagnostics.csproj

@@ -2,6 +2,7 @@
   <PropertyGroup>
     <TargetFramework>netstandard2.0</TargetFramework>
     <RootNamespace>Avalonia</RootNamespace>
+    <PackageId>Avalonia.Diagnostics</PackageId>
   </PropertyGroup>
   <ItemGroup>
     <Compile Update="**\*.xaml.cs">
@@ -28,4 +29,5 @@
   <Import Project="..\..\build\EmbedXaml.props" />
   <Import Project="..\..\build\Rx.props" />
   <Import Project="..\..\build\BuildTargets.targets" />
+  <Import Project="..\..\build\ApiDiff.props" />
 </Project>

+ 1 - 0
src/Avalonia.Dialogs/ApiCompatBaseline.txt

@@ -0,0 +1 @@
+Total Issues: 0

+ 2 - 0
src/Avalonia.Dialogs/Avalonia.Dialogs.csproj

@@ -15,4 +15,6 @@
   <ItemGroup>
     <ProjectReference Include="..\Markup\Avalonia.Markup.Xaml\Avalonia.Markup.Xaml.csproj" />
   </ItemGroup>
+
+  <Import Project="..\..\build\ApiDiff.props" />
 </Project>

+ 2 - 3
src/Avalonia.FreeDesktop/Avalonia.FreeDesktop.csproj

@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFramework>netstandard2.0</TargetFramework>
+    <TargetFramework>netstandard2.0</TargetFramework>    
   </PropertyGroup>
 
   <ItemGroup>
@@ -10,6 +10,5 @@
 
   <ItemGroup>
     <PackageReference Include="Tmds.DBus" Version="0.7.0" />
-  </ItemGroup>
-
+  </ItemGroup>  
 </Project>

+ 2 - 1
src/Avalonia.Headless/Avalonia.Headless.csproj

@@ -1,8 +1,9 @@
 <Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
     <TargetFramework>netstandard2.0</TargetFramework>
+
   </PropertyGroup>
   <ItemGroup>
     <ProjectReference Include="..\..\packages\Avalonia\Avalonia.csproj" />
-  </ItemGroup>
+  </ItemGroup>  
 </Project>

+ 1 - 0
src/Avalonia.Input/ApiCompatBaseline.txt

@@ -0,0 +1 @@
+Total Issues: 0

+ 1 - 0
src/Avalonia.Input/Avalonia.Input.csproj

@@ -10,4 +10,5 @@
     <ProjectReference Include="..\Avalonia.Visuals\Avalonia.Visuals.csproj" />
   </ItemGroup>  
   <Import Project="..\..\build\Rx.props" />
+  <Import Project="..\..\build\ApiDiff.props" />
 </Project>

+ 1 - 0
src/Avalonia.Interactivity/ApiCompatBaseline.txt

@@ -0,0 +1 @@
+Total Issues: 0

+ 1 - 0
src/Avalonia.Interactivity/Avalonia.Interactivity.csproj

@@ -11,4 +11,5 @@
     <ProjectReference Include="..\Avalonia.Visuals\Avalonia.Visuals.csproj" />
   </ItemGroup>
   <Import Project="..\..\build\Rx.props" />
+  <Import Project="..\..\build\ApiDiff.props" />
 </Project>

+ 1 - 0
src/Avalonia.Layout/ApiCompatBaseline.txt

@@ -0,0 +1 @@
+Total Issues: 0

+ 1 - 0
src/Avalonia.Layout/Avalonia.Layout.csproj

@@ -8,4 +8,5 @@
     <ProjectReference Include="..\Avalonia.Visuals\Avalonia.Visuals.csproj" />
   </ItemGroup>  
   <Import Project="..\..\build\Rx.props" />
+  <Import Project="..\..\build\ApiDiff.props" />
 </Project>

+ 1 - 0
src/Avalonia.OpenGL/ApiCompatBaseline.txt

@@ -0,0 +1 @@
+Total Issues: 0

+ 1 - 0
src/Avalonia.OpenGL/Avalonia.OpenGL.csproj

@@ -11,4 +11,5 @@
       <ProjectReference Include="..\Avalonia.Visuals\Avalonia.Visuals.csproj" />
     </ItemGroup>
 
+    <Import Project="..\..\build\ApiDiff.props" />
 </Project>

+ 1 - 0
src/Avalonia.ReactiveUI/ApiCompatBaseline.txt

@@ -0,0 +1 @@
+Total Issues: 0

+ 1 - 0
src/Avalonia.ReactiveUI/Avalonia.ReactiveUI.csproj

@@ -8,4 +8,5 @@
   </ItemGroup>
   <Import Project="..\..\build\Rx.props" />
   <Import Project="..\..\build\ReactiveUI.props" />
+  <Import Project="..\..\build\ApiDiff.props" />
 </Project>

+ 1 - 0
src/Avalonia.Remote.Protocol/ApiCompatBaseline.txt

@@ -0,0 +1 @@
+Total Issues: 0

+ 2 - 0
src/Avalonia.Remote.Protocol/Avalonia.Remote.Protocol.csproj

@@ -4,8 +4,10 @@
     <DefineConstants>AVALONIA_REMOTE_PROTOCOL;$(DefineConstants)</DefineConstants>
     <SignAssembly>true</SignAssembly>
     <AssemblyOriginatorKeyFile>Key.snk</AssemblyOriginatorKeyFile>
+    <PackageId>Avalonia.Remote.Protocol</PackageId>
   </PropertyGroup>
   <ItemGroup>
     <Compile Include="..\Avalonia.Input\Key.cs" />
   </ItemGroup>
+  <Import Project="..\..\build\ApiDiff.props" />
 </Project>

+ 1 - 0
src/Avalonia.Styling/ApiCompatBaseline.txt

@@ -0,0 +1 @@
+Total Issues: 0

+ 1 - 0
src/Avalonia.Styling/Avalonia.Styling.csproj

@@ -8,4 +8,5 @@
     <ProjectReference Include="..\Avalonia.Animation\Avalonia.Animation.csproj" />
     <ProjectReference Include="..\Avalonia.Base\Avalonia.Base.csproj" />
   </ItemGroup>
+  <Import Project="..\..\build\ApiDiff.props" />
 </Project>

+ 1 - 0
src/Avalonia.Themes.Default/ApiCompatBaseline.txt

@@ -0,0 +1 @@
+Total Issues: 0

+ 1 - 0
src/Avalonia.Themes.Default/Avalonia.Themes.Default.csproj

@@ -19,4 +19,5 @@
   </ItemGroup>
   <Import Project="..\..\build\BuildTargets.targets" />
   <Import Project="..\..\build\Rx.props" />
+  <Import Project="..\..\build\ApiDiff.props" />
 </Project>

+ 1 - 0
src/Avalonia.Themes.Fluent/ApiCompatBaseline.txt

@@ -0,0 +1 @@
+Total Issues: 0

+ 1 - 0
src/Avalonia.Themes.Fluent/Avalonia.Themes.Fluent.csproj

@@ -17,4 +17,5 @@
   </ItemGroup>
   <Import Project="..\..\build\BuildTargets.targets" />
   <Import Project="..\..\build\Rx.props" />
+  <Import Project="..\..\build\ApiDiff.props" />
 </Project>

+ 7 - 7
src/Avalonia.Themes.Fluent/Button.xaml

@@ -41,37 +41,37 @@
   </Style>
 
   <!-- PointerOverState -->  
-  <Style Selector="Button:pointerover /template/ ContentPresenter">
+  <Style Selector="Button:pointerover /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource ButtonBackgroundPointerOver}" />
     <Setter Property="BorderBrush" Value="{DynamicResource ButtonBorderBrushPointerOver}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource ButtonForegroundPointerOver}" />
   </Style>
   
-  <Style Selector="Button:pressed  /template/ ContentPresenter">
+  <Style Selector="Button:pressed  /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource ButtonBackgroundPressed}" />
     <Setter Property="BorderBrush" Value="{DynamicResource ButtonBorderBrushPressed}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource ButtonForegroundPressed}" />
   </Style>
   
-  <Style Selector="Button:disabled /template/ ContentPresenter">
+  <Style Selector="Button:disabled /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource ButtonBackgroundDisabled}" />
     <Setter Property="BorderBrush" Value="{DynamicResource ButtonBorderBrushDisabled}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource ButtonForegroundDisabled}" />
   </Style>
 
-  <Style Selector="Button.accent /template/ ContentPresenter">
+  <Style Selector="Button.accent /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource AccentButtonBackground}" />
     <Setter Property="BorderBrush" Value="{DynamicResource AccentButtonBorderBrush}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource AccentButtonForeground}" />
   </Style>
 
-  <Style Selector="Button.accent:pointerover /template/ ContentPresenter">
+  <Style Selector="Button.accent:pointerover /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource AccentButtonBackgroundPointerOver}" />
     <Setter Property="BorderBrush" Value="{DynamicResource AccentButtonBorderBrushPointerOver}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource AccentButtonForegroundPointerOver}" />
   </Style>
 
-  <Style Selector="Button.accent:pressed  /template/ ContentPresenter">
+  <Style Selector="Button.accent:pressed  /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource AccentButtonBackgroundPressed}" />
     <Setter Property="BorderBrush" Value="{DynamicResource AccentButtonBorderBrushPressed}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource AccentButtonForegroundPressed}" />
@@ -90,7 +90,7 @@
     <Setter Property="RenderTransform" Value="scale(0.98)" />    
   </Style>
 
-  <Style Selector="Button.accent:disabled /template/ ContentPresenter">
+  <Style Selector="Button.accent:disabled /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource AccentButtonBackgroundDisabled}" />
     <Setter Property="BorderBrush" Value="{DynamicResource AccentButtonBorderBrushDisabled}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource AccentButtonForegroundDisabled}" />

+ 4 - 4
src/Avalonia.Themes.Fluent/RepeatButton.xaml

@@ -37,23 +37,23 @@
     </Setter>
   </Style>
 
-  <Style Selector="RepeatButton /template/ ContentPresenter">
+  <Style Selector="RepeatButton /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="CornerRadius" Value="{DynamicResource ControlCornerRadius}" />
   </Style>
 
-  <Style Selector="RepeatButton:pointerover /template/ ContentPresenter">
+  <Style Selector="RepeatButton:pointerover /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource RepeatButtonBackgroundPointerOver}" />
     <Setter Property="BorderBrush" Value="{DynamicResource RepeatButtonBorderBrushPointerOver}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource RepeatButtonForegroundPointerOver}" />
   </Style>
 
-  <Style Selector="RepeatButton:pressed  /template/ ContentPresenter">
+  <Style Selector="RepeatButton:pressed  /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource RepeatButtonBackgroundPressed}" />
     <Setter Property="BorderBrush" Value="{DynamicResource RepeatButtonBorderBrushPressed}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource RepeatButtonForegroundPressed}" />
   </Style>
 
-  <Style Selector="RepeatButton:disabled /template/ ContentPresenter">
+  <Style Selector="RepeatButton:disabled /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource RepeatButtonBackgroundDisabled}" />
     <Setter Property="BorderBrush" Value="{DynamicResource RepeatButtonBorderBrushDisabled}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource RepeatButtonForegroundDisabled}" />

+ 11 - 11
src/Avalonia.Themes.Fluent/ToggleButton.xaml

@@ -39,67 +39,67 @@
     </Setter>
   </Style>
 
-  <Style Selector="ToggleButton:pointerover /template/ ContentPresenter">
+  <Style Selector="ToggleButton:pointerover /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundPointerOver}" />
     <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushPointerOver}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundPointerOver}" />
   </Style>
 
-  <Style Selector="ToggleButton:pressed  /template/ ContentPresenter">
+  <Style Selector="ToggleButton:pressed  /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundPressed}" />
     <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushPressed}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundPressed}" />
   </Style>
 
-  <Style Selector="ToggleButton:disabled /template/ ContentPresenter">
+  <Style Selector="ToggleButton:disabled /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundDisabled}" />
     <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushDisabled}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundDisabled}" />
   </Style>
 
-  <Style Selector="ToggleButton:checked /template/ ContentPresenter">
+  <Style Selector="ToggleButton:checked /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundChecked}" />
     <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushChecked}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundChecked}" />
   </Style>
 
-  <Style Selector="ToggleButton:checked:pointerover /template/ ContentPresenter">
+  <Style Selector="ToggleButton:checked:pointerover /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundCheckedPointerOver}" />
     <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushCheckedPointerOver}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundCheckedPointerOver}" />
   </Style>
 
-  <Style Selector="ToggleButton:checked:pressed /template/ ContentPresenter">
+  <Style Selector="ToggleButton:checked:pressed /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundCheckedPressed}" />
     <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushCheckedPressed}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundCheckedPressed}" />
   </Style>
 
-  <Style Selector="ToggleButton:checked:disabled /template/ ContentPresenter">
+  <Style Selector="ToggleButton:checked:disabled /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundCheckedDisabled}" />
     <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushCheckedDisabled}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundCheckedDisabled}" />
   </Style>
 
-  <Style Selector="ToggleButton:indeterminate /template/ ContentPresenter">
+  <Style Selector="ToggleButton:indeterminate /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundIndeterminate}" />
     <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushIndeterminate}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundIndeterminate}" />
   </Style>
 
-  <Style Selector="ToggleButton:indeterminate:pointerover /template/ ContentPresenter">
+  <Style Selector="ToggleButton:indeterminate:pointerover /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundIndeterminatePointerOver}" />
     <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushIndeterminatePointerOver}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundIndeterminatePointerOver}" />
   </Style>
 
-  <Style Selector="ToggleButton:indeterminate:pressed /template/ ContentPresenter">
+  <Style Selector="ToggleButton:indeterminate:pressed /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundIndeterminatePressed}" />
     <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushIndeterminatePressed}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundIndeterminatePressed}" />
   </Style>
 
-  <Style Selector="ToggleButton:indeterminate:disabled /template/ ContentPresenter">
+  <Style Selector="ToggleButton:indeterminate:disabled /template/ ContentPresenter#PART_ContentPresenter">
     <Setter Property="Background" Value="{DynamicResource ToggleButtonBackgroundIndeterminateDisabled}" />
     <Setter Property="BorderBrush" Value="{DynamicResource ToggleButtonBorderBrushIndeterminateDisabled}" />
     <Setter Property="TextBlock.Foreground" Value="{DynamicResource ToggleButtonForegroundIndeterminateDisabled}" />

+ 12 - 0
src/Avalonia.Visuals/ApiCompatBaseline.txt

@@ -0,0 +1,12 @@
+Compat issues with assembly Avalonia.Visuals:
+EnumValuesMustMatch : Enum value 'Avalonia.Media.TextWrapping Avalonia.Media.TextWrapping.NoWrap' is (System.Int32)0 in the implementation but (System.Int32)1 in the contract.
+EnumValuesMustMatch : Enum value 'Avalonia.Media.TextWrapping Avalonia.Media.TextWrapping.Wrap' is (System.Int32)1 in the implementation but (System.Int32)2 in the contract.
+EnumValuesMustMatch : Enum value 'Avalonia.Media.TextWrapping Avalonia.Media.TextWrapping.WrapWithOverflow' is (System.Int32)2 in the implementation but (System.Int32)0 in the contract.
+MembersMustExist : Member 'public void Avalonia.Media.TextFormatting.GenericTextParagraphProperties..ctor(Avalonia.Media.TextFormatting.TextRunProperties, Avalonia.Media.TextAlignment, Avalonia.Media.TextWrapping, Avalonia.Media.TextTrimming, System.Double)' does not exist in the implementation but it does exist in the contract.
+MembersMustExist : Member 'public Avalonia.Media.TextTrimming Avalonia.Media.TextFormatting.GenericTextParagraphProperties.TextTrimming.get()' does not exist in the implementation but it does exist in the contract.
+CannotAddAbstractMembers : Member 'public System.Boolean Avalonia.Media.TextFormatting.TextLine.HasCollapsed' is abstract in the implementation but is missing in the contract.
+CannotAddAbstractMembers : Member 'public Avalonia.Media.TextFormatting.TextLine Avalonia.Media.TextFormatting.TextLine.Collapse(Avalonia.Media.TextFormatting.TextCollapsingProperties[])' is abstract in the implementation but is missing in the contract.
+CannotAddAbstractMembers : Member 'public System.Boolean Avalonia.Media.TextFormatting.TextLine.HasCollapsed.get()' is abstract in the implementation but is missing in the contract.
+MembersMustExist : Member 'public void Avalonia.Media.TextFormatting.TextLineMetrics..ctor(Avalonia.Size, System.Double, Avalonia.Media.TextFormatting.TextRange)' does not exist in the implementation but it does exist in the contract.
+MembersMustExist : Member 'public Avalonia.Media.TextTrimming Avalonia.Media.TextFormatting.TextParagraphProperties.TextTrimming.get()' does not exist in the implementation but it does exist in the contract.
+Total Issues: 10

+ 1 - 0
src/Avalonia.Visuals/Avalonia.Visuals.csproj

@@ -14,4 +14,5 @@
   </ItemGroup>
   <Import Project="..\..\build\Rx.props" />
   <Import Project="..\..\build\System.Memory.props" />
+  <Import Project="..\..\build\ApiDiff.props" />
 </Project>

+ 1 - 0
src/Linux/Avalonia.LinuxFramebuffer/ApiCompatBaseline.txt

@@ -0,0 +1 @@
+Total Issues: 0

+ 2 - 1
src/Linux/Avalonia.LinuxFramebuffer/Avalonia.LinuxFramebuffer.csproj

@@ -7,5 +7,6 @@
   <ItemGroup>
     <ProjectReference Include="..\..\..\packages\Avalonia\Avalonia.csproj" />
     <ProjectReference Include="..\..\Skia\Avalonia.Skia\Avalonia.Skia.csproj" />
-  </ItemGroup>  
+  </ItemGroup>
+  <Import Project="..\..\..\build\ApiDiff.props" />
 </Project>

+ 2 - 1
src/Markup/Avalonia.Markup.Xaml.Loader/Avalonia.Markup.Xaml.Loader.csproj

@@ -3,6 +3,7 @@
   <PropertyGroup>
     <TargetFramework>netstandard2.0</TargetFramework>
     <IsPackable>true</IsPackable>
+    <PackageId>Avalonia.Markup.Xaml.Loader</PackageId>
   </PropertyGroup>
   <Import Project="IncludeXamlIlSre.props" />
   <ItemGroup>
@@ -10,5 +11,5 @@
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\Avalonia.Markup.Xaml\Avalonia.Markup.Xaml.csproj" />
-  </ItemGroup>
+  </ItemGroup>  
 </Project>

+ 1 - 1
src/Markup/Avalonia.Markup.Xaml.Loader/xamlil.github

@@ -1 +1 @@
-Subproject commit 7b8b3013bd42e1992838a525c991f44191da55be
+Subproject commit 8d9fee734afaced9366774fda41b6aa2ab19875f

+ 15 - 0
src/Markup/Avalonia.Markup.Xaml/ApiCompatBaseline.txt

@@ -0,0 +1,15 @@
+Compat issues with assembly Avalonia.Markup.Xaml:
+CannotMakeTypeAbstract : Type 'Avalonia.Markup.Xaml.AvaloniaXamlLoader' is abstract in the implementation but is not abstract in the contract.
+CannotSealType : Type 'Avalonia.Markup.Xaml.AvaloniaXamlLoader' is actually (has the sealed modifier) sealed in the implementation but not sealed in the contract.
+MembersMustExist : Member 'public void Avalonia.Markup.Xaml.AvaloniaXamlLoader..ctor()' does not exist in the implementation but it does exist in the contract.
+MembersMustExist : Member 'public System.Boolean Avalonia.Markup.Xaml.AvaloniaXamlLoader.IsDesignMode.get()' does not exist in the implementation but it does exist in the contract.
+MembersMustExist : Member 'public void Avalonia.Markup.Xaml.AvaloniaXamlLoader.IsDesignMode.set(System.Boolean)' does not exist in the implementation but it does exist in the contract.
+MembersMustExist : Member 'public System.Object Avalonia.Markup.Xaml.AvaloniaXamlLoader.Load(System.IO.Stream, System.Reflection.Assembly, System.Object, System.Uri)' does not exist in the implementation but it does exist in the contract.
+MembersMustExist : Member 'public System.Object Avalonia.Markup.Xaml.AvaloniaXamlLoader.Load(System.String, System.Reflection.Assembly, System.Object)' does not exist in the implementation but it does exist in the contract.
+MembersMustExist : Member 'public System.Object Avalonia.Markup.Xaml.AvaloniaXamlLoader.Parse(System.String, System.Reflection.Assembly)' does not exist in the implementation but it does exist in the contract.
+MembersMustExist : Member 'public T Avalonia.Markup.Xaml.AvaloniaXamlLoader.Parse<T>(System.String, System.Reflection.Assembly)' does not exist in the implementation but it does exist in the contract.
+MembersMustExist : Member 'public System.Boolean Avalonia.Markup.Xaml.Templates.DataTemplate.SupportsRecycling.get()' does not exist in the implementation but it does exist in the contract.
+MembersMustExist : Member 'public void Avalonia.Markup.Xaml.Templates.DataTemplate.SupportsRecycling.set(System.Boolean)' does not exist in the implementation but it does exist in the contract.
+MembersMustExist : Member 'public System.Boolean Avalonia.Markup.Xaml.Templates.TreeDataTemplate.SupportsRecycling.get()' does not exist in the implementation but it does exist in the contract.
+MembersMustExist : Member 'public void Avalonia.Markup.Xaml.Templates.TreeDataTemplate.SupportsRecycling.set(System.Boolean)' does not exist in the implementation but it does exist in the contract.
+Total Issues: 13

+ 1 - 0
src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj

@@ -64,4 +64,5 @@
     <ProjectReference Include="..\Avalonia.Markup\Avalonia.Markup.csproj" />
   </ItemGroup>
   <Import Project="..\..\..\build\Rx.props" />
+  <Import Project="..\..\..\build\ApiDiff.props" />
 </Project>

+ 1 - 0
src/Markup/Avalonia.Markup/ApiCompatBaseline.txt

@@ -0,0 +1 @@
+Total Issues: 0

+ 1 - 0
src/Markup/Avalonia.Markup/Avalonia.Markup.csproj

@@ -16,4 +16,5 @@
   </ItemGroup>
   <Import Project="..\..\..\build\Rx.props" />
   <Import Project="..\..\..\build\System.Memory.props" />
+  <Import Project="..\..\..\build\ApiDiff.props" />
 </Project>

+ 1 - 0
src/Skia/Avalonia.Skia/ApiCompatBaseline.txt

@@ -0,0 +1 @@
+Total Issues: 0

+ 1 - 0
src/Skia/Avalonia.Skia/Avalonia.Skia.csproj

@@ -17,4 +17,5 @@
   <Import Project="..\..\..\build\SkiaSharp.props" />
   <Import Project="..\..\..\build\HarfBuzzSharp.props" />
   <Import Project="..\..\Shared\RenderHelpers\RenderHelpers.projitems" Label="Shared" />
+  <Import Project="..\..\..\build\ApiDiff.props" />
 </Project>

+ 3 - 0
src/Windows/Avalonia.Win32/ApiCompatBaseline.txt

@@ -0,0 +1,3 @@
+Compat issues with assembly Avalonia.Win32:
+MembersMustExist : Member 'public System.Double Avalonia.Win32.WindowImpl.Scaling.get()' does not exist in the implementation but it does exist in the contract.
+Total Issues: 1

+ 1 - 0
src/Windows/Avalonia.Win32/Avalonia.Win32.csproj

@@ -9,4 +9,5 @@
     <PackageReference Include="Avalonia.Angle.Windows.Natives" Version="2.1.0.2019013001" />
   </ItemGroup>
   <Import Project="$(MSBuildThisFileDirectory)\..\..\..\build\System.Drawing.Common.props" />  
+  <Import Project="..\..\..\build\ApiDiff.props" />
 </Project>