Browse Source

Merge branch 'master'

Conflicts:
	samples/TestApplication/TestApplication.csproj
	samples/XamlTestApplication/XamlTestApplication.csproj
	samples/XamlTestApplicationPcl/XamlTestApplicationPcl.csproj
danwalmsley 9 years ago
parent
commit
78e5e29bb7
100 changed files with 208 additions and 85 deletions
  1. 2 2
      Avalonia.sln
  2. 5 0
      appveyor.yml
  3. 42 12
      build.cake
  4. 1 1
      docs/docfx.json
  5. 1 1
      docs/spec/architecture.md
  6. 1 1
      docs/tutorial/nuget.md
  7. 3 3
      readme.md
  8. 2 2
      samples/BindingTest/BindingTest.csproj
  9. 4 0
      samples/BindingTest/MainWindow.xaml
  10. 18 0
      samples/BindingTest/ViewModels/MainWindowViewModel.cs
  11. 2 2
      samples/ControlCatalog.Android/ControlCatalog.Android.csproj
  12. 2 2
      samples/ControlCatalog.Desktop/ControlCatalog.Desktop.csproj
  13. 2 2
      samples/ControlCatalog.iOS/ControlCatalog.iOS.csproj
  14. 2 2
      samples/ControlCatalog/ControlCatalog.csproj
  15. 2 2
      samples/RenderTest/RenderTest.csproj
  16. 2 2
      samples/VirtualizationTest/VirtualizationTest.csproj
  17. 2 2
      samples/interop/GtkInteropDemo/GtkInteropDemo.csproj
  18. 2 2
      samples/interop/WindowsInteropTest/WindowsInteropTest.csproj
  19. 2 2
      src/Android/Avalonia.Android/Avalonia.Android.csproj
  20. 2 2
      src/Android/Avalonia.AndroidTestApplication/Avalonia.AndroidTestApplication.csproj
  21. 8 2
      src/Avalonia.Base/AvaloniaObject.cs
  22. 25 6
      src/Avalonia.Base/Threading/AvaloniaScheduler.cs
  23. 3 1
      src/Avalonia.Controls/Application.cs
  24. 2 2
      src/Avalonia.Controls/Avalonia.Controls.csproj
  25. 5 0
      src/Avalonia.Controls/Generators/IItemContainerGenerator.cs
  26. 3 0
      src/Avalonia.Controls/Generators/ItemContainerGenerator.cs
  27. 3 0
      src/Avalonia.Controls/Generators/ItemContainerGenerator`1.cs
  28. 39 11
      src/Avalonia.Controls/ItemsControl.cs
  29. 2 2
      src/Avalonia.DesignerSupport/Avalonia.DesignerSupport.csproj
  30. 2 2
      src/Avalonia.Diagnostics/Avalonia.Diagnostics.csproj
  31. 2 2
      src/Avalonia.DotNetFrameworkRuntime/Avalonia.DotNetFrameworkRuntime.csproj
  32. 2 2
      src/Avalonia.HtmlRenderer/Avalonia.HtmlRenderer.csproj
  33. 2 2
      src/Avalonia.Input/Avalonia.Input.csproj
  34. 2 2
      src/Avalonia.Interactivity/Avalonia.Interactivity.csproj
  35. 2 2
      src/Avalonia.Layout/Avalonia.Layout.csproj
  36. 2 2
      src/Avalonia.Styling/Avalonia.Styling.csproj
  37. 2 2
      src/Avalonia.Themes.Default/Avalonia.Themes.Default.csproj
  38. 0 0
      src/Avalonia.Visuals/Animation/CrossFade.cs
  39. 0 0
      src/Avalonia.Visuals/Animation/IPageTransition.cs
  40. 0 0
      src/Avalonia.Visuals/Animation/PageSlide.cs
  41. 3 3
      src/Avalonia.Visuals/Avalonia.Visuals.csproj
  42. 0 0
      src/Avalonia.Visuals/Avalonia.Visuals.v2.ncrunchproject
  43. 0 0
      src/Avalonia.Visuals/INamed.cs
  44. 0 0
      src/Avalonia.Visuals/Matrix.cs
  45. 0 0
      src/Avalonia.Visuals/Media/AlignmentX.cs
  46. 0 0
      src/Avalonia.Visuals/Media/AlignmentY.cs
  47. 0 0
      src/Avalonia.Visuals/Media/ArcSegment.cs
  48. 0 0
      src/Avalonia.Visuals/Media/BezierSegment .cs
  49. 0 0
      src/Avalonia.Visuals/Media/Brush.cs
  50. 0 0
      src/Avalonia.Visuals/Media/BrushMappingMode.cs
  51. 0 0
      src/Avalonia.Visuals/Media/Brushes.cs
  52. 0 0
      src/Avalonia.Visuals/Media/Color.cs
  53. 0 0
      src/Avalonia.Visuals/Media/Colors.cs
  54. 0 0
      src/Avalonia.Visuals/Media/DashStyle.cs
  55. 0 0
      src/Avalonia.Visuals/Media/DrawingContext.cs
  56. 0 0
      src/Avalonia.Visuals/Media/EllipseGeometry.cs
  57. 0 0
      src/Avalonia.Visuals/Media/FillRule.cs
  58. 0 0
      src/Avalonia.Visuals/Media/FontStyle.cs
  59. 0 0
      src/Avalonia.Visuals/Media/FontWeight.cs
  60. 0 0
      src/Avalonia.Visuals/Media/FormattedText.cs
  61. 0 0
      src/Avalonia.Visuals/Media/FormattedTextLine.cs
  62. 0 0
      src/Avalonia.Visuals/Media/Geometry.cs
  63. 0 0
      src/Avalonia.Visuals/Media/GradientBrush.cs
  64. 0 0
      src/Avalonia.Visuals/Media/GradientSpreadMethod.cs
  65. 0 0
      src/Avalonia.Visuals/Media/GradientStop.cs
  66. 0 0
      src/Avalonia.Visuals/Media/IBrush.cs
  67. 0 0
      src/Avalonia.Visuals/Media/IDrawingContext.cs
  68. 0 0
      src/Avalonia.Visuals/Media/ISolidColorBrush.cs
  69. 0 0
      src/Avalonia.Visuals/Media/ImageBush.cs
  70. 0 0
      src/Avalonia.Visuals/Media/Imaging/Bitmap.cs
  71. 0 0
      src/Avalonia.Visuals/Media/Imaging/IBitmap.cs
  72. 0 0
      src/Avalonia.Visuals/Media/Imaging/RenderTargetBitmap.cs
  73. 0 0
      src/Avalonia.Visuals/Media/LineGeometry.cs
  74. 0 0
      src/Avalonia.Visuals/Media/LineSegment.cs
  75. 0 0
      src/Avalonia.Visuals/Media/LinearGradientBrush.cs
  76. 0 0
      src/Avalonia.Visuals/Media/MatrixTransform.cs
  77. 0 0
      src/Avalonia.Visuals/Media/MediaExtensions.cs
  78. 0 0
      src/Avalonia.Visuals/Media/Mutable/SolidColorBrush.cs
  79. 0 0
      src/Avalonia.Visuals/Media/PathFigure.cs
  80. 0 0
      src/Avalonia.Visuals/Media/PathGeometry.cs
  81. 0 0
      src/Avalonia.Visuals/Media/PathGeometryCollections.cs
  82. 0 0
      src/Avalonia.Visuals/Media/PathMarkupParser.cs
  83. 0 0
      src/Avalonia.Visuals/Media/PathSegment.cs
  84. 0 0
      src/Avalonia.Visuals/Media/Pen.cs
  85. 0 0
      src/Avalonia.Visuals/Media/PenLineCap.cs
  86. 0 0
      src/Avalonia.Visuals/Media/PenLineJoin.cs
  87. 0 0
      src/Avalonia.Visuals/Media/PolylineGeometry.cs
  88. 0 0
      src/Avalonia.Visuals/Media/QuadraticBezierSegment .cs
  89. 0 0
      src/Avalonia.Visuals/Media/RadialGradientBrush.cs
  90. 0 0
      src/Avalonia.Visuals/Media/RectangleGeometry.cs
  91. 0 0
      src/Avalonia.Visuals/Media/RotateTransform.cs
  92. 0 0
      src/Avalonia.Visuals/Media/ScaleTransform.cs
  93. 0 0
      src/Avalonia.Visuals/Media/SolidColorBrush.cs
  94. 0 0
      src/Avalonia.Visuals/Media/StreamGeometry.cs
  95. 0 0
      src/Avalonia.Visuals/Media/StreamGeometryContext.cs
  96. 0 0
      src/Avalonia.Visuals/Media/Stretch.cs
  97. 0 0
      src/Avalonia.Visuals/Media/SweepDirection.cs
  98. 0 0
      src/Avalonia.Visuals/Media/TextAlignment.cs
  99. 0 0
      src/Avalonia.Visuals/Media/TextHitTestResult.cs
  100. 0 0
      src/Avalonia.Visuals/Media/TextWrapping.cs

+ 2 - 2
Avalonia.sln

@@ -4,7 +4,7 @@ VisualStudioVersion = 14.0.25420.1
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Base", "src\Avalonia.Base\Avalonia.Base.csproj", "{B09B78D8-9B26-48B0-9149-D64A2F120F3F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.SceneGraph", "src\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj", "{EB582467-6ABB-43A1-B052-E981BA910E3A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Visuals", "src\Avalonia.Visuals\Avalonia.Visuals.csproj", "{EB582467-6ABB-43A1-B052-E981BA910E3A}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Layout", "src\Avalonia.Layout\Avalonia.Layout.csproj", "{42472427-4774-4C81-8AFF-9F27B8E31721}"
 EndProject
@@ -39,7 +39,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Styling.UnitTests"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Controls.UnitTests", "tests\Avalonia.Controls.UnitTests\Avalonia.Controls.UnitTests.csproj", "{5CCB5571-7C30-4E7D-967D-0E2158EBD91F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.SceneGraph.UnitTests", "tests\Avalonia.SceneGraph.UnitTests\Avalonia.SceneGraph.UnitTests.csproj", "{76716382-3159-460E-BDA6-C5715CF606D7}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Visuals.UnitTests", "tests\Avalonia.Visuals.UnitTests\Avalonia.Visuals.UnitTests.csproj", "{76716382-3159-460E-BDA6-C5715CF606D7}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Base.UnitTests", "tests\Avalonia.Base.UnitTests\Avalonia.Base.UnitTests.csproj", "{2905FF23-53FB-45E6-AA49-6AF47A172056}"
 EndProject

+ 5 - 0
appveyor.yml

@@ -20,6 +20,11 @@ build_script:
 - ps: .\build.ps1 -Target "AppVeyor" -Platform "$env:platform" -Configuration "$env:configuration"
 after_build:
 - .\packages\JetBrains.dotMemoryUnit.2.1.20150828.125449\tools\dotMemoryUnit.exe -targetExecutable="%xunit20%\xunit.console.x86.exe" -returnTargetExitCode  --"tests\Avalonia.LeakTests\bin\Release\Avalonia.LeakTests.dll"
+
+- "SET PATH=C:\\Python34;C:\\Python34\\Scripts;%PATH%"
+- pip install codecov
+- codecov -f "./artifacts/coverage.xml"
+
 test: off
 artifacts:
   - path: artifacts\nuget\*.nupkg

+ 42 - 12
build.cake

@@ -10,6 +10,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #tool "nuget:?package=xunit.runner.console&version=2.1.0"
+#tool "nuget:?package=OpenCover"
 
 ///////////////////////////////////////////////////////////////////////////////
 // USINGS
@@ -92,6 +93,7 @@ var artifactsDir = (DirectoryPath)Directory("./artifacts");
 var nugetRoot = artifactsDir.Combine("nuget");
 var zipRoot = artifactsDir.Combine("zip");
 var binRoot = artifactsDir.Combine("bin");
+var testsRoot = artifactsDir.Combine("tests");
 
 var dirSuffix = configuration;
 var dirSuffixSkia = (isPlatformAnyCPU ? "x86" : platform) + "/" + configuration;
@@ -240,8 +242,8 @@ var coreLibraries = new string[][]
     new [] { "./src/", "Avalonia.Layout", ".xml" },
     new [] { "./src/", "Avalonia.Logging.Serilog", ".dll" },
     new [] { "./src/", "Avalonia.Logging.Serilog", ".xml" },
-    new [] { "./src/", "Avalonia.SceneGraph", ".dll" },
-    new [] { "./src/", "Avalonia.SceneGraph", ".xml" },
+    new [] { "./src/", "Avalonia.Visuals", ".dll" },
+    new [] { "./src/", "Avalonia.Visuals", ".xml" },
     new [] { "./src/", "Avalonia.Styling", ".dll" },
     new [] { "./src/", "Avalonia.Styling", ".xml" },
     new [] { "./src/", "Avalonia.ReactiveUI", ".dll" },
@@ -585,6 +587,7 @@ Task("Clean")
     CleanDirectory(nugetRoot);
     CleanDirectory(zipRoot);
     CleanDirectory(binRoot);
+    CleanDirectory(testsRoot);
 });
 
 Task("Restore-NuGet-Packages")
@@ -659,29 +662,56 @@ Task("Run-Unit-Tests")
 
     if (isRunningOnWindows)
     {
-        var windowsTests = GetFiles("./tests/Avalonia.DesignerSupport.Tests/bin/" + dirSuffix + "/*.Tests.dll") + 
-                           GetFiles("./tests/Avalonia.LeakTests/bin/" + dirSuffix + "/*.LeakTests.dll") + 
-                           GetFiles("./tests/Avalonia.RenderTests/bin/" + dirSuffix + "/*.RenderTests.dll");
+        var leakTests = GetFiles("./tests/Avalonia.LeakTests/bin/" + dirSuffix + "/*.LeakTests.dll");
 
-        unitTests.AddRange(windowsTests);
+        unitTests.AddRange(leakTests);
     }
 
     var toolPath = (isPlatformAnyCPU || isPlatformX86) ? 
         "./tools/xunit.runner.console/tools/xunit.console.x86.exe" :
         "./tools/xunit.runner.console/tools/xunit.console.exe";
 
-    var settings = new XUnit2Settings 
+    var xUnitSettings = new XUnit2Settings 
     { 
         ToolPath = toolPath,
-        Parallelism = ParallelismOption.None 
+        Parallelism = ParallelismOption.None,
+        ShadowCopy = false
     };
 
-    settings.NoAppDomain = !isRunningOnWindows;
+    xUnitSettings.NoAppDomain = !isRunningOnWindows;
 
-    foreach (var file in unitTests)
+    var openCoverOutput = artifactsDir.GetFilePath(new FilePath("./coverage.xml"));
+    var openCoverSettings = new OpenCoverSettings()
+        .WithFilter("+[Avalonia.*]* -[*Test*]* -[ControlCatalog*]*")
+        .WithFilter("-[Avalonia.*]OmniXaml.* -[Avalonia.*]Glass.*")
+        .WithFilter("-[Avalonia.HtmlRenderer]TheArtOfDev.HtmlRenderer.* +[Avalonia.HtmlRenderer]TheArtOfDev.HtmlRenderer.Avalonia.* -[Avalonia.ReactiveUI]*");
+    
+    openCoverSettings.ReturnTargetCodeOffset = 0;
+
+    foreach(var test in unitTests.Where(testFile => FileExists(testFile)))
+    {
+        CopyDirectory(test.GetDirectory(), testsRoot);
+    }
+
+    var testsInDirectoryToRun = new List<FilePath>();
+    if(isRunningOnWindows)
+    {
+        testsInDirectoryToRun.AddRange(GetFiles("./artifacts/tests/*Tests.dll"));
+    }
+    else
+    {
+        testsInDirectoryToRun.AddRange(GetFiles("./artifacts/tests/*.UnitTests.dll"));
+    }
+
+    if(isRunningOnWindows)
+    {
+        OpenCover(context => {
+            context.XUnit2(testsInDirectoryToRun, xUnitSettings);
+        }, openCoverOutput, openCoverSettings);
+    }
+    else
     {
-        Information("Running test " + file.GetFilenameWithoutExtension());
-        XUnit2(file.FullPath, settings);
+        XUnit2(testsInDirectoryToRun, xUnitSettings);
     }
 });
 

+ 1 - 1
docs/docfx.json

@@ -18,7 +18,7 @@
             "/src/Avalonia.Interactivity/Avalonia.Interactivity.csproj",
             "/src/Avalonia.Layout/Avalonia.Layout.csproj",
             "/src/Avalonia.ReactiveUI/Avalonia.ReactiveUI.csproj",
-            "/src/Avalonia.SceneGraph/Avalonia.SceneGraph.csproj",
+            "/src/Avalonia.Visuals/Avalonia.Visuals.csproj",
             "/src/Avalonia.Styling/Avalonia.Styling.csproj",
             "/src/Avalonia.Themes.Default/Avalonia.Themes.Default.csproj",
             "/src/Skia/Avalonia.Skia.Desktop/Avalonia.Skia.Desktop.csproj",

+ 1 - 1
docs/spec/architecture.md

@@ -40,7 +40,7 @@ The main class in the assembly is `Animatable`.
 
 Allows AvaloniaProperties to be animated and provides various utilities related to animation.
 
-### Avalonia.SceneGraph
+### Avalonia.Visuals
 
 The main class in this assembly is `Visual` and its interface `IVisual`.
 

+ 1 - 1
docs/tutorial/nuget.md

@@ -20,7 +20,7 @@ Avalonia is divided into several `NuGet` packages.
   - Avalonia.Interactivity (.dll)
   - Avalonia.Layout (.dll)
   - Avalonia.Logging.Serilog (.dll)
-  - Avalonia.SceneGraph (.dll)
+  - Avalonia.Visuals (.dll)
   - Avalonia.Styling (.dll)
   - Avalonia.ReactiveUI (.dll)
   - Avalonia.Themes.Default (.dll)

+ 3 - 3
readme.md

@@ -1,9 +1,9 @@
 # Avalonia
-[![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/AvaloniaUI/Avalonia?utm_campaign=pr-badge&utm_content=badge&utm_medium=badge&utm_source=badge)
 
-[![Build status](https://ci.appveyor.com/api/projects/status/hubk3k0w9idyibfg/branch/master?svg=true)](https://ci.appveyor.com/project/AvaloniaUI/Avalonia/branch/master)
 
-[![Build Status](https://travis-ci.org/AvaloniaUI/Avalonia.svg?branch=master)](https://travis-ci.org/AvaloniaUI/Avalonia)
+| Gitter Chat | Windows Build Status | Linux/Mac Build Status | Code Coverage |
+|---|---|---|---|
+| [![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/AvaloniaUI/Avalonia?utm_campaign=pr-badge&utm_content=badge&utm_medium=badge&utm_source=badge) | [![Build status](https://ci.appveyor.com/api/projects/status/hubk3k0w9idyibfg/branch/master?svg=true)](https://ci.appveyor.com/project/AvaloniaUI/Avalonia/branch/master) | [![Build Status](https://travis-ci.org/AvaloniaUI/Avalonia.svg?branch=master)](https://travis-ci.org/AvaloniaUI/Avalonia) | [![codecov](https://codecov.io/gh/AvaloniaUI/Avalonia/branch/master/graph/badge.svg)](https://codecov.io/gh/AvaloniaUI/Avalonia) |
 
 A multi-platform .NET UI framework. It can run on Windows, Linux, Mac OS X, iOS and Android.
 

+ 2 - 2
samples/BindingTest/BindingTest.csproj

@@ -148,9 +148,9 @@
       <Project>{6417b24e-49c2-4985-8db2-3ab9d898ec91}</Project>
       <Name>Avalonia.ReactiveUI</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\src\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
+    <ProjectReference Include="..\..\src\Avalonia.Visuals\Avalonia.Visuals.csproj">
       <Project>{eb582467-6abb-43a1-b052-e981ba910e3a}</Project>
-      <Name>Avalonia.SceneGraph</Name>
+      <Name>Avalonia.Visuals</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\src\Avalonia.Styling\Avalonia.Styling.csproj">
       <Project>{f1baa01a-f176-4c6a-b39d-5b40bb1b148f}</Project>

+ 4 - 0
samples/BindingTest/MainWindow.xaml

@@ -41,6 +41,10 @@
             <TextBox Watermark="Value of first TextBox" UseFloatingWatermark="True" 
                      Text="{Binding #first.Text, Mode=TwoWay}"/>
           </StackPanel>
+          <StackPanel Margin="18" Gap="4" Width="200" HorizontalAlignment="Left">
+            <TextBlock FontSize="16" Text="Scheduler"/>
+            <TextBox Watermark="Background Thread" Text="{Binding CurrentTime, Mode=OneWay}"/>
+          </StackPanel>
         </StackPanel>
       </StackPanel>
     </TabItem>

+ 18 - 0
samples/BindingTest/ViewModels/MainWindowViewModel.cs

@@ -3,6 +3,8 @@ using System.Collections.ObjectModel;
 using System.Linq;
 using ReactiveUI;
 using System.Reactive.Linq;
+using System.Threading.Tasks;
+using System.Threading;
 
 namespace BindingTest.ViewModels
 {
@@ -12,6 +14,7 @@ namespace BindingTest.ViewModels
         private double _doubleValue = 5.0;
         private string _stringValue = "Simple Binding";
         private bool _booleanFlag = false;
+        private string _currentTime;
 
         public MainWindowViewModel()
         {
@@ -37,6 +40,15 @@ namespace BindingTest.ViewModels
                 BooleanFlag = !BooleanFlag;
                 StringValue = param.ToString();
             });
+
+            Task.Run(() =>
+            {
+                while (true)
+                {
+                    CurrentTime = DateTimeOffset.Now.ToString();
+                    Thread.Sleep(1000);
+                }
+            });
         }
 
         public ObservableCollection<TestItem> Items { get; }
@@ -67,6 +79,12 @@ namespace BindingTest.ViewModels
             set { this.RaiseAndSetIfChanged(ref _booleanFlag, value); }
         }
 
+        public string CurrentTime
+        {
+            get { return _currentTime; }
+            private set { this.RaiseAndSetIfChanged(ref _currentTime, value); }
+        }
+
         public ReactiveCommand<object> StringValueCommand { get; }
 
         public DataAnnotationsErrorViewModel DataAnnotationsValidation { get; } = new DataAnnotationsErrorViewModel();

+ 2 - 2
samples/ControlCatalog.Android/ControlCatalog.Android.csproj

@@ -129,9 +129,9 @@
       <Project>{42472427-4774-4c81-8aff-9f27b8e31721}</Project>
       <Name>Avalonia.Layout</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\src\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
+    <ProjectReference Include="..\..\src\Avalonia.Visuals\Avalonia.Visuals.csproj">
       <Project>{eb582467-6abb-43a1-b052-e981ba910e3a}</Project>
-      <Name>Avalonia.SceneGraph</Name>
+      <Name>Avalonia.Visuals</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\src\Avalonia.Styling\Avalonia.Styling.csproj">
       <Project>{f1baa01a-f176-4c6a-b39d-5b40bb1b148f}</Project>

+ 2 - 2
samples/ControlCatalog.Desktop/ControlCatalog.Desktop.csproj

@@ -112,9 +112,9 @@
       <Project>{B61B66A3-B82D-4875-8001-89D3394FE0C9}</Project>
       <Name>Avalonia.Logging.Serilog</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\src\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
+    <ProjectReference Include="..\..\src\Avalonia.Visuals\Avalonia.Visuals.csproj">
       <Project>{eb582467-6abb-43a1-b052-e981ba910e3a}</Project>
-      <Name>Avalonia.SceneGraph</Name>
+      <Name>Avalonia.Visuals</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\src\Avalonia.Styling\Avalonia.Styling.csproj">
       <Project>{F1BAA01A-F176-4C6A-B39D-5B40BB1B148F}</Project>

+ 2 - 2
samples/ControlCatalog.iOS/ControlCatalog.iOS.csproj

@@ -144,9 +144,9 @@
       <Project>{42472427-4774-4C81-8AFF-9F27B8E31721}</Project>
       <Name>Avalonia.Layout</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\src\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
+    <ProjectReference Include="..\..\src\Avalonia.Visuals\Avalonia.Visuals.csproj">
       <Project>{EB582467-6ABB-43A1-B052-E981BA910E3A}</Project>
-      <Name>Avalonia.SceneGraph</Name>
+      <Name>Avalonia.Visuals</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\src\Avalonia.Styling\Avalonia.Styling.csproj">
       <Project>{F1BAA01A-F176-4C6A-B39D-5B40BB1B148F}</Project>

+ 2 - 2
samples/ControlCatalog/ControlCatalog.csproj

@@ -197,9 +197,9 @@
       <Project>{6417B24E-49C2-4985-8DB2-3AB9D898EC91}</Project>
       <Name>Avalonia.ReactiveUI</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\src\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
+    <ProjectReference Include="..\..\src\Avalonia.Visuals\Avalonia.Visuals.csproj">
       <Project>{EB582467-6ABB-43A1-B052-E981BA910E3A}</Project>
-      <Name>Avalonia.SceneGraph</Name>
+      <Name>Avalonia.Visuals</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\src\Avalonia.Styling\Avalonia.Styling.csproj">
       <Project>{F1BAA01A-F176-4C6A-B39D-5B40BB1B148F}</Project>

+ 2 - 2
samples/RenderTest/RenderTest.csproj

@@ -139,9 +139,9 @@
       <Project>{6417b24e-49c2-4985-8db2-3ab9d898ec91}</Project>
       <Name>Avalonia.ReactiveUI</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\src\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
+    <ProjectReference Include="..\..\src\Avalonia.Visuals\Avalonia.Visuals.csproj">
       <Project>{eb582467-6abb-43a1-b052-e981ba910e3a}</Project>
-      <Name>Avalonia.SceneGraph</Name>
+      <Name>Avalonia.Visuals</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\src\Avalonia.Styling\Avalonia.Styling.csproj">
       <Project>{f1baa01a-f176-4c6a-b39d-5b40bb1b148f}</Project>

+ 2 - 2
samples/VirtualizationTest/VirtualizationTest.csproj

@@ -127,9 +127,9 @@
       <Project>{6417b24e-49c2-4985-8db2-3ab9d898ec91}</Project>
       <Name>Avalonia.ReactiveUI</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\src\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
+    <ProjectReference Include="..\..\src\Avalonia.Visuals\Avalonia.Visuals.csproj">
       <Project>{eb582467-6abb-43a1-b052-e981ba910e3a}</Project>
-      <Name>Avalonia.SceneGraph</Name>
+      <Name>Avalonia.Visuals</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\src\Avalonia.Styling\Avalonia.Styling.csproj">
       <Project>{f1baa01a-f176-4c6a-b39d-5b40bb1b148f}</Project>

+ 2 - 2
samples/interop/GtkInteropDemo/GtkInteropDemo.csproj

@@ -112,9 +112,9 @@
       <Project>{6417b24e-49c2-4985-8db2-3ab9d898ec91}</Project>
       <Name>Avalonia.ReactiveUI</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\..\src\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
+    <ProjectReference Include="..\..\..\src\Avalonia.Visuals\Avalonia.Visuals.csproj">
       <Project>{eb582467-6abb-43a1-b052-e981ba910e3a}</Project>
-      <Name>Avalonia.SceneGraph</Name>
+      <Name>Avalonia.Visuals</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\..\src\Avalonia.Styling\Avalonia.Styling.csproj">
       <Project>{f1baa01a-f176-4c6a-b39d-5b40bb1b148f}</Project>

+ 2 - 2
samples/interop/WindowsInteropTest/WindowsInteropTest.csproj

@@ -136,9 +136,9 @@
       <Project>{6417b24e-49c2-4985-8db2-3ab9d898ec91}</Project>
       <Name>Avalonia.ReactiveUI</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\..\src\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
+    <ProjectReference Include="..\..\..\src\Avalonia.Visuals\Avalonia.Visuals.csproj">
       <Project>{eb582467-6abb-43a1-b052-e981ba910e3a}</Project>
-      <Name>Avalonia.SceneGraph</Name>
+      <Name>Avalonia.Visuals</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\..\src\Avalonia.Styling\Avalonia.Styling.csproj">
       <Project>{f1baa01a-f176-4c6a-b39d-5b40bb1b148f}</Project>

+ 2 - 2
src/Android/Avalonia.Android/Avalonia.Android.csproj

@@ -124,9 +124,9 @@
       <Project>{6417b24e-49c2-4985-8db2-3ab9d898ec91}</Project>
       <Name>Avalonia.ReactiveUI</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
+    <ProjectReference Include="..\..\Avalonia.Visuals\Avalonia.Visuals.csproj">
       <Project>{eb582467-6abb-43a1-b052-e981ba910e3a}</Project>
-      <Name>Avalonia.SceneGraph</Name>
+      <Name>Avalonia.Visuals</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\Avalonia.Styling\Avalonia.Styling.csproj">
       <Project>{f1baa01a-f176-4c6a-b39d-5b40bb1b148f}</Project>

+ 2 - 2
src/Android/Avalonia.AndroidTestApplication/Avalonia.AndroidTestApplication.csproj

@@ -160,9 +160,9 @@
       <Project>{6417b24e-49c2-4985-8db2-3ab9d898ec91}</Project>
       <Name>Avalonia.ReactiveUI</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\..\src\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
+    <ProjectReference Include="..\..\Avalonia.Visuals\Avalonia.Visuals.csproj">
       <Project>{eb582467-6abb-43a1-b052-e981ba910e3a}</Project>
-      <Name>Avalonia.SceneGraph</Name>
+      <Name>Avalonia.Visuals</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\..\src\Avalonia.Styling\Avalonia.Styling.csproj">
       <Project>{f1baa01a-f176-4c6a-b39d-5b40bb1b148f}</Project>

+ 8 - 2
src/Avalonia.Base/AvaloniaObject.cs

@@ -12,6 +12,7 @@ using Avalonia.Diagnostics;
 using Avalonia.Logging;
 using Avalonia.Threading;
 using Avalonia.Utilities;
+using System.Reactive.Concurrency;
 
 namespace Avalonia
 {
@@ -304,6 +305,11 @@ namespace Avalonia
 
             VerifyAccess();
 
+            var description = GetDescription(source);
+
+            var scheduler = AvaloniaLocator.Current.GetService<IScheduler>() ?? ImmediateScheduler.Instance;
+            source = source.ObserveOn(scheduler); 
+
             if (property.IsDirect)
             {
                 if (property.IsReadOnly)
@@ -316,7 +322,7 @@ namespace Avalonia
                     this,
                     "Bound {Property} to {Binding} with priority LocalValue", 
                     property, 
-                    GetDescription(source));
+                    description);
 
                 IDisposable subscription = null;
 
@@ -358,7 +364,7 @@ namespace Avalonia
                     this,
                     "Bound {Property} to {Binding} with priority {Priority}",
                     property,
-                    GetDescription(source),
+                    description,
                     priority);
 
                 return v.Add(source, (int)priority);

+ 25 - 6
src/Avalonia.Base/Threading/AvaloniaScheduler.cs

@@ -3,6 +3,7 @@
 
 using System;
 using System.Reactive.Concurrency;
+using System.Reactive.Disposables;
 
 namespace Avalonia.Threading
 {
@@ -26,13 +27,31 @@ namespace Avalonia.Threading
         /// <inheritdoc/>
         public override IDisposable Schedule<TState>(TState state, TimeSpan dueTime, Func<IScheduler, TState, IDisposable> action)
         {
-            return DispatcherTimer.Run(
-                () =>
+            var composite = new CompositeDisposable(2);
+            if (dueTime == TimeSpan.Zero)
+            {
+                if (!Dispatcher.UIThread.CheckAccess())
                 {
-                    action(this, state);
-                    return false;
-                },
-                dueTime);
+                    var cancellation = new CancellationDisposable();
+                    Dispatcher.UIThread.InvokeAsync(() =>
+                    {
+                        if (!cancellation.Token.IsCancellationRequested)
+                        {
+                            composite.Add(action(this, state));
+                        }
+                    }, DispatcherPriority.DataBind);
+                    composite.Add(cancellation); 
+                }
+                else
+                {
+                    return action(this, state);
+                }
+            }
+            else
+            {
+                composite.Add(DispatcherTimer.RunOnce(() => composite.Add(action(this, state)), dueTime));
+            }
+            return composite;
         }
     }
 }

+ 3 - 1
src/Avalonia.Controls/Application.cs

@@ -11,6 +11,7 @@ using Avalonia.Layout;
 using Avalonia.Rendering;
 using Avalonia.Styling;
 using Avalonia.Threading;
+using System.Reactive.Concurrency;
 
 namespace Avalonia
 {
@@ -175,7 +176,8 @@ namespace Avalonia
                 .Bind<IKeyboardNavigationHandler>().ToTransient<KeyboardNavigationHandler>()
                 .Bind<IStyler>().ToConstant(_styler)
                 .Bind<ILayoutManager>().ToSingleton<LayoutManager>()
-                .Bind<IApplicationLifecycle>().ToConstant(this);
+                .Bind<IApplicationLifecycle>().ToConstant(this)
+                .Bind<IScheduler>().ToConstant(AvaloniaScheduler.Instance);
         }
     }
 }

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

@@ -256,9 +256,9 @@
       <Project>{42472427-4774-4C81-8AFF-9F27B8E31721}</Project>
       <Name>Avalonia.Layout</Name>
     </ProjectReference>
-    <ProjectReference Include="..\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
+    <ProjectReference Include="..\Avalonia.Visuals\Avalonia.Visuals.csproj">
       <Project>{EB582467-6ABB-43A1-B052-E981BA910E3A}</Project>
-      <Name>Avalonia.SceneGraph</Name>
+      <Name>Avalonia.Visuals</Name>
     </ProjectReference>
     <ProjectReference Include="..\Avalonia.Styling\Avalonia.Styling.csproj">
       <Project>{F1BAA01A-F176-4C6A-B39D-5B40BB1B148F}</Project>

+ 5 - 0
src/Avalonia.Controls/Generators/IItemContainerGenerator.cs

@@ -22,6 +22,11 @@ namespace Avalonia.Controls.Generators
         /// </summary>
         IDataTemplate ItemTemplate { get; set; }
 
+        /// <summary>
+        /// Gets the ContainerType, or null if its an untyped ContainerGenerator.
+        /// </summary>
+        Type ContainerType { get; }
+
         /// <summary>
         /// Signalled whenever new containers are materialized.
         /// </summary>

+ 3 - 0
src/Avalonia.Controls/Generators/ItemContainerGenerator.cs

@@ -50,6 +50,9 @@ namespace Avalonia.Controls.Generators
         /// </summary>
         public IControl Owner { get; }
 
+        /// <inheritdoc/>
+        public virtual Type ContainerType => null;
+
         /// <inheritdoc/>
         public ItemContainerInfo Materialize(
             int index,

+ 3 - 0
src/Avalonia.Controls/Generators/ItemContainerGenerator`1.cs

@@ -34,6 +34,9 @@ namespace Avalonia.Controls.Generators
             ContentTemplateProperty = contentTemplateProperty;
         }
 
+        /// <inheritdoc/>
+        public override Type ContainerType => typeof(T);
+
         /// <summary>
         /// Gets the container's Content property.
         /// </summary>

+ 39 - 11
src/Avalonia.Controls/ItemsControl.cs

@@ -4,7 +4,6 @@
 using System.Collections;
 using System.Collections.Generic;
 using System.Collections.Specialized;
-using System.Diagnostics.CodeAnalysis;
 using System.Linq;
 using Avalonia.Collections;
 using Avalonia.Controls.Generators;
@@ -226,19 +225,35 @@ namespace Avalonia.Controls
         /// <param name="e">The details of the containers.</param>
         protected virtual void OnContainersMaterialized(ItemContainerEventArgs e)
         {
-            var toAdd = new List<ILogical>();
-
             foreach (var container in e.Containers)
             {
                 // If the item is its own container, then it will be added to the logical tree when
                 // it was added to the Items collection.
                 if (container.ContainerControl != null && container.ContainerControl != container.Item)
                 {
-                    toAdd.Add(container.ContainerControl);
+                    if (ItemContainerGenerator.ContainerType == null)
+                    {
+                        var containerControl = container.ContainerControl as ContentPresenter;
+
+                        if (containerControl != null)
+                        {
+                            ((ISetLogicalParent)containerControl).SetParent(this);
+                            containerControl.SetValue(TemplatedParentProperty, null);
+
+                            containerControl.UpdateChild();
+
+                            if (containerControl.Child != null)
+                            {
+                                LogicalChildren.Add(containerControl.Child);
+                            }
+                        }
+                    }
+                    else
+                    {
+                        LogicalChildren.Add(container.ContainerControl);
+                    }
                 }
             }
-
-            LogicalChildren.AddRange(toAdd);
         }
 
         /// <summary>
@@ -248,19 +263,32 @@ namespace Avalonia.Controls
         /// <param name="e">The details of the containers.</param>
         protected virtual void OnContainersDematerialized(ItemContainerEventArgs e)
         {
-            var toRemove = new List<ILogical>();
-
             foreach (var container in e.Containers)
             {
                 // If the item is its own container, then it will be removed from the logical tree
                 // when it is removed from the Items collection.
                 if (container?.ContainerControl != container?.Item)
                 {
-                    toRemove.Add(container.ContainerControl);
+                    if (ItemContainerGenerator.ContainerType == null)
+                    {
+                        var containerControl = container.ContainerControl as ContentPresenter;
+
+                        if (containerControl != null)
+                        {
+                            ((ISetLogicalParent)containerControl).SetParent(null);
+
+                            if (containerControl.Child != null)
+                            {
+                                LogicalChildren.Remove(containerControl.Child);
+                            }
+                        }
+                    }
+                    else
+                    {
+                        LogicalChildren.Remove(container.ContainerControl);
+                    }
                 }
             }
-
-            LogicalChildren.RemoveAll(toRemove);
         }
 
         /// <summary>

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

@@ -73,9 +73,9 @@
       <Project>{42472427-4774-4C81-8AFF-9F27B8E31721}</Project>
       <Name>Avalonia.Layout</Name>
     </ProjectReference>
-    <ProjectReference Include="..\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
+    <ProjectReference Include="..\Avalonia.Visuals\Avalonia.Visuals.csproj">
       <Project>{EB582467-6ABB-43A1-B052-E981BA910E3A}</Project>
-      <Name>Avalonia.SceneGraph</Name>
+      <Name>Avalonia.Visuals</Name>
     </ProjectReference>
     <ProjectReference Include="..\Avalonia.Styling\Avalonia.Styling.csproj">
       <Project>{F1BAA01A-F176-4C6A-B39D-5B40BB1B148F}</Project>

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

@@ -78,9 +78,9 @@
       <Project>{6417B24E-49C2-4985-8DB2-3AB9D898EC91}</Project>
       <Name>Avalonia.ReactiveUI</Name>
     </ProjectReference>
-    <ProjectReference Include="..\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
+    <ProjectReference Include="..\Avalonia.Visuals\Avalonia.Visuals.csproj">
       <Project>{EB582467-6ABB-43A1-B052-E981BA910E3A}</Project>
-      <Name>Avalonia.SceneGraph</Name>
+      <Name>Avalonia.Visuals</Name>
     </ProjectReference>
     <ProjectReference Include="..\Avalonia.Styling\Avalonia.Styling.csproj">
       <Project>{F1BAA01A-F176-4C6A-B39D-5B40BB1B148F}</Project>

+ 2 - 2
src/Avalonia.DotNetFrameworkRuntime/Avalonia.DotNetFrameworkRuntime.csproj

@@ -65,9 +65,9 @@
       <Project>{D2221C82-4A25-4583-9B43-D791E3F6820C}</Project>
       <Name>Avalonia.Controls</Name>
     </ProjectReference>
-    <ProjectReference Include="..\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
+    <ProjectReference Include="..\Avalonia.Visuals\Avalonia.Visuals.csproj">
       <Project>{eb582467-6abb-43a1-b052-e981ba910e3a}</Project>
-      <Name>Avalonia.SceneGraph</Name>
+      <Name>Avalonia.Visuals</Name>
     </ProjectReference>
     <ProjectReference Include="..\Avalonia.Styling\Avalonia.Styling.csproj">
       <Project>{f1baa01a-f176-4c6a-b39d-5b40bb1b148f}</Project>

+ 2 - 2
src/Avalonia.HtmlRenderer/Avalonia.HtmlRenderer.csproj

@@ -161,9 +161,9 @@
       <Project>{42472427-4774-4C81-8AFF-9F27B8E31721}</Project>
       <Name>Avalonia.Layout</Name>
     </ProjectReference>
-    <ProjectReference Include="..\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
+    <ProjectReference Include="..\Avalonia.Visuals\Avalonia.Visuals.csproj">
       <Project>{EB582467-6ABB-43A1-B052-E981BA910E3A}</Project>
-      <Name>Avalonia.SceneGraph</Name>
+      <Name>Avalonia.Visuals</Name>
     </ProjectReference>
     <ProjectReference Include="..\Avalonia.Styling\Avalonia.Styling.csproj">
       <Project>{F1BAA01A-F176-4C6A-B39D-5B40BB1B148F}</Project>

+ 2 - 2
src/Avalonia.Input/Avalonia.Input.csproj

@@ -58,9 +58,9 @@
       <Project>{42472427-4774-4C81-8AFF-9F27B8E31721}</Project>
       <Name>Avalonia.Layout</Name>
     </ProjectReference>
-    <ProjectReference Include="..\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
+    <ProjectReference Include="..\Avalonia.Visuals\Avalonia.Visuals.csproj">
       <Project>{EB582467-6ABB-43A1-B052-E981BA910E3A}</Project>
-      <Name>Avalonia.SceneGraph</Name>
+      <Name>Avalonia.Visuals</Name>
     </ProjectReference>
   </ItemGroup>
   <ItemGroup>

+ 2 - 2
src/Avalonia.Interactivity/Avalonia.Interactivity.csproj

@@ -54,9 +54,9 @@
       <Project>{42472427-4774-4C81-8AFF-9F27B8E31721}</Project>
       <Name>Avalonia.Layout</Name>
     </ProjectReference>
-    <ProjectReference Include="..\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
+    <ProjectReference Include="..\Avalonia.Visuals\Avalonia.Visuals.csproj">
       <Project>{EB582467-6ABB-43A1-B052-E981BA910E3A}</Project>
-      <Name>Avalonia.SceneGraph</Name>
+      <Name>Avalonia.Visuals</Name>
     </ProjectReference>
   </ItemGroup>
   <ItemGroup>

+ 2 - 2
src/Avalonia.Layout/Avalonia.Layout.csproj

@@ -50,9 +50,9 @@
       <Project>{B09B78D8-9B26-48B0-9149-D64A2F120F3F}</Project>
       <Name>Avalonia.Base</Name>
     </ProjectReference>
-    <ProjectReference Include="..\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
+    <ProjectReference Include="..\Avalonia.Visuals\Avalonia.Visuals.csproj">
       <Project>{EB582467-6ABB-43A1-B052-E981BA910E3A}</Project>
-      <Name>Avalonia.SceneGraph</Name>
+      <Name>Avalonia.Visuals</Name>
     </ProjectReference>
   </ItemGroup>
   <ItemGroup>

+ 2 - 2
src/Avalonia.Styling/Avalonia.Styling.csproj

@@ -111,9 +111,9 @@
       <Project>{B09B78D8-9B26-48B0-9149-D64A2F120F3F}</Project>
       <Name>Avalonia.Base</Name>
     </ProjectReference>
-    <ProjectReference Include="..\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
+    <ProjectReference Include="..\Avalonia.Visuals\Avalonia.Visuals.csproj">
       <Project>{EB582467-6ABB-43A1-B052-E981BA910E3A}</Project>
-      <Name>Avalonia.SceneGraph</Name>
+      <Name>Avalonia.Visuals</Name>
     </ProjectReference>
   </ItemGroup>
   <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />

+ 2 - 2
src/Avalonia.Themes.Default/Avalonia.Themes.Default.csproj

@@ -68,9 +68,9 @@
       <Project>{42472427-4774-4C81-8AFF-9F27B8E31721}</Project>
       <Name>Avalonia.Layout</Name>
     </ProjectReference>
-    <ProjectReference Include="..\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
+    <ProjectReference Include="..\Avalonia.Visuals\Avalonia.Visuals.csproj">
       <Project>{EB582467-6ABB-43A1-B052-E981BA910E3A}</Project>
-      <Name>Avalonia.SceneGraph</Name>
+      <Name>Avalonia.Visuals</Name>
     </ProjectReference>
     <ProjectReference Include="..\Avalonia.Styling\Avalonia.Styling.csproj">
       <Project>{F1BAA01A-F176-4C6A-B39D-5B40BB1B148F}</Project>

+ 0 - 0
src/Avalonia.SceneGraph/Animation/CrossFade.cs → src/Avalonia.Visuals/Animation/CrossFade.cs


+ 0 - 0
src/Avalonia.SceneGraph/Animation/IPageTransition.cs → src/Avalonia.Visuals/Animation/IPageTransition.cs


+ 0 - 0
src/Avalonia.SceneGraph/Animation/PageSlide.cs → src/Avalonia.Visuals/Animation/PageSlide.cs


+ 3 - 3
src/Avalonia.SceneGraph/Avalonia.SceneGraph.csproj → src/Avalonia.Visuals/Avalonia.Visuals.csproj

@@ -9,7 +9,7 @@
     <OutputType>Library</OutputType>
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>Avalonia</RootNamespace>
-    <AssemblyName>Avalonia.SceneGraph</AssemblyName>
+    <AssemblyName>Avalonia.Visuals</AssemblyName>
     <DefaultLanguage>en-US</DefaultLanguage>
     <FileAlignment>512</FileAlignment>
     <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
@@ -26,7 +26,7 @@
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <DocumentationFile>bin\Debug\Avalonia.SceneGraph.XML</DocumentationFile>
+    <DocumentationFile>bin\Debug\Avalonia.Visuals.xml</DocumentationFile>
     <NoWarn>CS1591</NoWarn>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
@@ -36,7 +36,7 @@
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <DocumentationFile>bin\Release\Avalonia.SceneGraph.XML</DocumentationFile>
+    <DocumentationFile>bin\Release\Avalonia.Visuals.xml</DocumentationFile>
     <NoWarn>CS1591</NoWarn>
     <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
   </PropertyGroup>

+ 0 - 0
src/Avalonia.SceneGraph/Avalonia.SceneGraph.v2.ncrunchproject → src/Avalonia.Visuals/Avalonia.Visuals.v2.ncrunchproject


+ 0 - 0
src/Avalonia.SceneGraph/INamed.cs → src/Avalonia.Visuals/INamed.cs


+ 0 - 0
src/Avalonia.SceneGraph/Matrix.cs → src/Avalonia.Visuals/Matrix.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/AlignmentX.cs → src/Avalonia.Visuals/Media/AlignmentX.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/AlignmentY.cs → src/Avalonia.Visuals/Media/AlignmentY.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/ArcSegment.cs → src/Avalonia.Visuals/Media/ArcSegment.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/BezierSegment .cs → src/Avalonia.Visuals/Media/BezierSegment .cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/Brush.cs → src/Avalonia.Visuals/Media/Brush.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/BrushMappingMode.cs → src/Avalonia.Visuals/Media/BrushMappingMode.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/Brushes.cs → src/Avalonia.Visuals/Media/Brushes.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/Color.cs → src/Avalonia.Visuals/Media/Color.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/Colors.cs → src/Avalonia.Visuals/Media/Colors.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/DashStyle.cs → src/Avalonia.Visuals/Media/DashStyle.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/DrawingContext.cs → src/Avalonia.Visuals/Media/DrawingContext.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/EllipseGeometry.cs → src/Avalonia.Visuals/Media/EllipseGeometry.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/FillRule.cs → src/Avalonia.Visuals/Media/FillRule.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/FontStyle.cs → src/Avalonia.Visuals/Media/FontStyle.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/FontWeight.cs → src/Avalonia.Visuals/Media/FontWeight.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/FormattedText.cs → src/Avalonia.Visuals/Media/FormattedText.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/FormattedTextLine.cs → src/Avalonia.Visuals/Media/FormattedTextLine.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/Geometry.cs → src/Avalonia.Visuals/Media/Geometry.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/GradientBrush.cs → src/Avalonia.Visuals/Media/GradientBrush.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/GradientSpreadMethod.cs → src/Avalonia.Visuals/Media/GradientSpreadMethod.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/GradientStop.cs → src/Avalonia.Visuals/Media/GradientStop.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/IBrush.cs → src/Avalonia.Visuals/Media/IBrush.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/IDrawingContext.cs → src/Avalonia.Visuals/Media/IDrawingContext.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/ISolidColorBrush.cs → src/Avalonia.Visuals/Media/ISolidColorBrush.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/ImageBush.cs → src/Avalonia.Visuals/Media/ImageBush.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/Imaging/Bitmap.cs → src/Avalonia.Visuals/Media/Imaging/Bitmap.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/Imaging/IBitmap.cs → src/Avalonia.Visuals/Media/Imaging/IBitmap.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/Imaging/RenderTargetBitmap.cs → src/Avalonia.Visuals/Media/Imaging/RenderTargetBitmap.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/LineGeometry.cs → src/Avalonia.Visuals/Media/LineGeometry.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/LineSegment.cs → src/Avalonia.Visuals/Media/LineSegment.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/LinearGradientBrush.cs → src/Avalonia.Visuals/Media/LinearGradientBrush.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/MatrixTransform.cs → src/Avalonia.Visuals/Media/MatrixTransform.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/MediaExtensions.cs → src/Avalonia.Visuals/Media/MediaExtensions.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/Mutable/SolidColorBrush.cs → src/Avalonia.Visuals/Media/Mutable/SolidColorBrush.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/PathFigure.cs → src/Avalonia.Visuals/Media/PathFigure.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/PathGeometry.cs → src/Avalonia.Visuals/Media/PathGeometry.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/PathGeometryCollections.cs → src/Avalonia.Visuals/Media/PathGeometryCollections.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/PathMarkupParser.cs → src/Avalonia.Visuals/Media/PathMarkupParser.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/PathSegment.cs → src/Avalonia.Visuals/Media/PathSegment.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/Pen.cs → src/Avalonia.Visuals/Media/Pen.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/PenLineCap.cs → src/Avalonia.Visuals/Media/PenLineCap.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/PenLineJoin.cs → src/Avalonia.Visuals/Media/PenLineJoin.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/PolylineGeometry.cs → src/Avalonia.Visuals/Media/PolylineGeometry.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/QuadraticBezierSegment .cs → src/Avalonia.Visuals/Media/QuadraticBezierSegment .cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/RadialGradientBrush.cs → src/Avalonia.Visuals/Media/RadialGradientBrush.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/RectangleGeometry.cs → src/Avalonia.Visuals/Media/RectangleGeometry.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/RotateTransform.cs → src/Avalonia.Visuals/Media/RotateTransform.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/ScaleTransform.cs → src/Avalonia.Visuals/Media/ScaleTransform.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/SolidColorBrush.cs → src/Avalonia.Visuals/Media/SolidColorBrush.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/StreamGeometry.cs → src/Avalonia.Visuals/Media/StreamGeometry.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/StreamGeometryContext.cs → src/Avalonia.Visuals/Media/StreamGeometryContext.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/Stretch.cs → src/Avalonia.Visuals/Media/Stretch.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/SweepDirection.cs → src/Avalonia.Visuals/Media/SweepDirection.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/TextAlignment.cs → src/Avalonia.Visuals/Media/TextAlignment.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/TextHitTestResult.cs → src/Avalonia.Visuals/Media/TextHitTestResult.cs


+ 0 - 0
src/Avalonia.SceneGraph/Media/TextWrapping.cs → src/Avalonia.Visuals/Media/TextWrapping.cs


Some files were not shown because too many files changed in this diff