diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 487a2555d4..96251b1685 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -10,11 +10,15 @@ on: - master - main +concurrency: + group: docs-${{ github.ref }} + cancel-in-progress: true + permissions: - contents: write + contents: read jobs: - deploy: + build: runs-on: ubuntu-latest steps: - name: Checkout @@ -37,8 +41,32 @@ jobs: chmod +x build-docs.sh ./build-docs.sh + - name: Upload docs artifact + if: github.event_name == 'push' && github.ref_name == github.event.repository.default_branch + uses: actions/upload-artifact@v4 + with: + name: docs-site + path: ./site/.lunet/build/www + include-hidden-files: true + if-no-files-found: error + + deploy: + if: github.event_name == 'push' && github.ref_name == github.event.repository.default_branch + needs: build + permissions: + contents: write + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Download docs artifact + uses: actions/download-artifact@v4 + with: + name: docs-site + path: ./site/.lunet/build/www + - name: Deploy to GitHub Pages - if: github.event_name == 'push' uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/Directory.Build.props b/Directory.Build.props index 79a5650e6e..2b622bcb30 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,10 +1,10 @@  - 3.7.0 + 4.0.0 - 11.3.9.5 + 12.0.0 $(VersionSuffix) - 6.5.31 + 6.5.31.1 $(VersionSuffix) Wiesław Šoltés Wiesław Šoltés diff --git a/Directory.Packages.props b/Directory.Packages.props index ad6bf1a925..324e188354 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -1,13 +1,12 @@  true - 11.3.9 + 12.0.0 - - + @@ -16,7 +15,6 @@ - @@ -38,6 +36,7 @@ + diff --git a/README.md b/README.md index 049b6d4b66..aa1938c8a0 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,29 @@ [![Github All Releases](https://img.shields.io/github/downloads/wieslawsoltes/svg.skia/total.svg)](https://github.com/wieslawsoltes/svg.skia) [![Github Releases](https://img.shields.io/github/downloads/wieslawsoltes/svg.skia/latest/total.svg)](https://github.com/wieslawsoltes/svg.skia) +| Package ID | NuGet | Downloads | +| --- | --- | --- | +| `ShimSkiaSharp` | [![NuGet](https://img.shields.io/nuget/v/ShimSkiaSharp.svg)](https://www.nuget.org/packages/ShimSkiaSharp/) | [![NuGet Downloads](https://img.shields.io/nuget/dt/ShimSkiaSharp.svg)](https://www.nuget.org/packages/ShimSkiaSharp/) | +| `Skia.Controls.Avalonia` | [![NuGet](https://img.shields.io/nuget/v/Skia.Controls.Avalonia.svg)](https://www.nuget.org/packages/Skia.Controls.Avalonia/) | [![NuGet Downloads](https://img.shields.io/nuget/dt/Skia.Controls.Avalonia.svg)](https://www.nuget.org/packages/Skia.Controls.Avalonia/) | +| `Svg.Animation` | [![NuGet](https://img.shields.io/nuget/v/Svg.Animation.svg)](https://www.nuget.org/packages/Svg.Animation/) | [![NuGet Downloads](https://img.shields.io/nuget/dt/Svg.Animation.svg)](https://www.nuget.org/packages/Svg.Animation/) | +| `Svg.CodeGen.Skia` | [![NuGet](https://img.shields.io/nuget/v/Svg.CodeGen.Skia.svg)](https://www.nuget.org/packages/Svg.CodeGen.Skia/) | [![NuGet Downloads](https://img.shields.io/nuget/dt/Svg.CodeGen.Skia.svg)](https://www.nuget.org/packages/Svg.CodeGen.Skia/) | +| `Svg.Controls.Avalonia` | [![NuGet](https://img.shields.io/nuget/v/Svg.Controls.Avalonia.svg)](https://www.nuget.org/packages/Svg.Controls.Avalonia/) | [![NuGet Downloads](https://img.shields.io/nuget/dt/Svg.Controls.Avalonia.svg)](https://www.nuget.org/packages/Svg.Controls.Avalonia/) | +| `Svg.Controls.Skia.Avalonia` | [![NuGet](https://img.shields.io/nuget/v/Svg.Controls.Skia.Avalonia.svg)](https://www.nuget.org/packages/Svg.Controls.Skia.Avalonia/) | [![NuGet Downloads](https://img.shields.io/nuget/dt/Svg.Controls.Skia.Avalonia.svg)](https://www.nuget.org/packages/Svg.Controls.Skia.Avalonia/) | +| `Svg.Controls.Skia.Uno` | [![NuGet](https://img.shields.io/nuget/v/Svg.Controls.Skia.Uno.svg)](https://www.nuget.org/packages/Svg.Controls.Skia.Uno/) | [![NuGet Downloads](https://img.shields.io/nuget/dt/Svg.Controls.Skia.Uno.svg)](https://www.nuget.org/packages/Svg.Controls.Skia.Uno/) | +| `Svg.Custom` | [![NuGet](https://img.shields.io/nuget/v/Svg.Custom.svg)](https://www.nuget.org/packages/Svg.Custom/) | [![NuGet Downloads](https://img.shields.io/nuget/dt/Svg.Custom.svg)](https://www.nuget.org/packages/Svg.Custom/) | +| `Svg.Editor.Avalonia` | [![NuGet](https://img.shields.io/nuget/v/Svg.Editor.Avalonia.svg)](https://www.nuget.org/packages/Svg.Editor.Avalonia/) | [![NuGet Downloads](https://img.shields.io/nuget/dt/Svg.Editor.Avalonia.svg)](https://www.nuget.org/packages/Svg.Editor.Avalonia/) | +| `Svg.Editor.Core` | [![NuGet](https://img.shields.io/nuget/v/Svg.Editor.Core.svg)](https://www.nuget.org/packages/Svg.Editor.Core/) | [![NuGet Downloads](https://img.shields.io/nuget/dt/Svg.Editor.Core.svg)](https://www.nuget.org/packages/Svg.Editor.Core/) | +| `Svg.Editor.Skia` | [![NuGet](https://img.shields.io/nuget/v/Svg.Editor.Skia.svg)](https://www.nuget.org/packages/Svg.Editor.Skia/) | [![NuGet Downloads](https://img.shields.io/nuget/dt/Svg.Editor.Skia.svg)](https://www.nuget.org/packages/Svg.Editor.Skia/) | +| `Svg.Editor.Skia.Avalonia` | [![NuGet](https://img.shields.io/nuget/v/Svg.Editor.Skia.Avalonia.svg)](https://www.nuget.org/packages/Svg.Editor.Skia.Avalonia/) | [![NuGet Downloads](https://img.shields.io/nuget/dt/Svg.Editor.Skia.Avalonia.svg)](https://www.nuget.org/packages/Svg.Editor.Skia.Avalonia/) | +| `Svg.Editor.Svg` | [![NuGet](https://img.shields.io/nuget/v/Svg.Editor.Svg.svg)](https://www.nuget.org/packages/Svg.Editor.Svg/) | [![NuGet Downloads](https://img.shields.io/nuget/dt/Svg.Editor.Svg.svg)](https://www.nuget.org/packages/Svg.Editor.Svg/) | +| `Svg.Model` | [![NuGet](https://img.shields.io/nuget/v/Svg.Model.svg)](https://www.nuget.org/packages/Svg.Model/) | [![NuGet Downloads](https://img.shields.io/nuget/dt/Svg.Model.svg)](https://www.nuget.org/packages/Svg.Model/) | +| `Svg.SceneGraph` | [![NuGet](https://img.shields.io/nuget/v/Svg.SceneGraph.svg)](https://www.nuget.org/packages/Svg.SceneGraph/) | [![NuGet Downloads](https://img.shields.io/nuget/dt/Svg.SceneGraph.svg)](https://www.nuget.org/packages/Svg.SceneGraph/) | +| `Svg.Skia` | [![NuGet](https://img.shields.io/nuget/v/Svg.Skia.svg)](https://www.nuget.org/packages/Svg.Skia/) | [![NuGet Downloads](https://img.shields.io/nuget/dt/Svg.Skia.svg)](https://www.nuget.org/packages/Svg.Skia/) | +| `Svg.Skia.Converter` | [![NuGet](https://img.shields.io/nuget/v/Svg.Skia.Converter.svg)](https://www.nuget.org/packages/Svg.Skia.Converter/) | [![NuGet Downloads](https://img.shields.io/nuget/dt/Svg.Skia.Converter.svg)](https://www.nuget.org/packages/Svg.Skia.Converter/) | +| `Svg.SourceGenerator.Skia` | [![NuGet](https://img.shields.io/nuget/v/Svg.SourceGenerator.Skia.svg)](https://www.nuget.org/packages/Svg.SourceGenerator.Skia/) | [![NuGet Downloads](https://img.shields.io/nuget/dt/Svg.SourceGenerator.Skia.svg)](https://www.nuget.org/packages/Svg.SourceGenerator.Skia/) | +| `svgc` | [![NuGet](https://img.shields.io/nuget/v/svgc.svg)](https://www.nuget.org/packages/svgc/) | [![NuGet Downloads](https://img.shields.io/nuget/dt/svgc.svg)](https://www.nuget.org/packages/svgc/) | +| `SvgToPng` | [![NuGet](https://img.shields.io/nuget/v/SvgToPng.svg)](https://www.nuget.org/packages/SvgToPng/) | [![NuGet Downloads](https://img.shields.io/nuget/dt/SvgToPng.svg)](https://www.nuget.org/packages/SvgToPng/) | + *Svg.Skia* is an [SVG](https://en.wikipedia.org/wiki/Scalable_Vector_Graphics) rendering library. ## About diff --git a/Svg.Skia.slnx b/Svg.Skia.slnx index 8f5b09614b..035ddfbff0 100644 --- a/Svg.Skia.slnx +++ b/Svg.Skia.slnx @@ -30,7 +30,7 @@ - + diff --git a/build/Avalonia.Diagnostics.props b/build/Avalonia.Diagnostics.props index d809e48ed7..dd058c6baa 100644 --- a/build/Avalonia.Diagnostics.props +++ b/build/Avalonia.Diagnostics.props @@ -1,6 +1,6 @@  - + diff --git a/build/Avalonia.ReactiveUI.props b/build/ReactiveUI.Avalonia.props similarity index 76% rename from build/Avalonia.ReactiveUI.props rename to build/ReactiveUI.Avalonia.props index e1419432c0..a3e8d07f54 100644 --- a/build/Avalonia.ReactiveUI.props +++ b/build/ReactiveUI.Avalonia.props @@ -1,6 +1,6 @@  - + diff --git a/build/SkiaSharp.Native.v3.props b/build/SkiaSharp.Native.v3.props index cdf486fa0f..96cbc5725f 100644 --- a/build/SkiaSharp.Native.v3.props +++ b/build/SkiaSharp.Native.v3.props @@ -1,9 +1,9 @@ - - - - + + + + diff --git a/build/SkiaSharp.v3.props b/build/SkiaSharp.v3.props index d9689afb39..cb7734c379 100644 --- a/build/SkiaSharp.v3.props +++ b/build/SkiaSharp.v3.props @@ -1,6 +1,6 @@ - + diff --git a/build/XUnit.v3.props b/build/XUnit.v3.props new file mode 100644 index 0000000000..8e0946d9c8 --- /dev/null +++ b/build/XUnit.v3.props @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/samples/AvalonDraw/App.axaml.cs b/samples/AvalonDraw/App.axaml.cs index dc10e882f7..93c8c2dfc4 100644 --- a/samples/AvalonDraw/App.axaml.cs +++ b/samples/AvalonDraw/App.axaml.cs @@ -1,5 +1,6 @@ using Avalonia; using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Diagnostics; using Avalonia.Markup.Xaml; namespace AvalonDraw; @@ -19,5 +20,8 @@ public override void OnFrameworkInitializationCompleted() } base.OnFrameworkInitializationCompleted(); +#if DEBUG + this.AttachDevTools(); +#endif } } diff --git a/samples/AvaloniaControlsSample/App.axaml.cs b/samples/AvaloniaControlsSample/App.axaml.cs index 06310375c7..e200fda087 100644 --- a/samples/AvaloniaControlsSample/App.axaml.cs +++ b/samples/AvaloniaControlsSample/App.axaml.cs @@ -1,5 +1,6 @@ using Avalonia; using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Diagnostics; using Avalonia.Markup.Xaml; namespace AvaloniaControlsSample; @@ -19,5 +20,8 @@ public override void OnFrameworkInitializationCompleted() } base.OnFrameworkInitializationCompleted(); +#if DEBUG + this.AttachDevTools(); +#endif } } diff --git a/samples/AvaloniaControlsSample/MainWindow.axaml.cs b/samples/AvaloniaControlsSample/MainWindow.axaml.cs index 1ae19c5b1e..f4946e555d 100644 --- a/samples/AvaloniaControlsSample/MainWindow.axaml.cs +++ b/samples/AvaloniaControlsSample/MainWindow.axaml.cs @@ -9,9 +9,6 @@ public partial class MainWindow : Window public MainWindow() { InitializeComponent(); -#if DEBUG - this.AttachDevTools(); -#endif CanvasControl.Draw += (_, e) => { e.Canvas.DrawRect(SKRect.Create(0f, 0f, 100f, 100f), new SKPaint { Color = SKColors.Aqua }); diff --git a/samples/AvaloniaSKPictureImageSample/App.axaml.cs b/samples/AvaloniaSKPictureImageSample/App.axaml.cs index 2855c249e0..476d5c5590 100644 --- a/samples/AvaloniaSKPictureImageSample/App.axaml.cs +++ b/samples/AvaloniaSKPictureImageSample/App.axaml.cs @@ -1,5 +1,6 @@ using Avalonia; using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Diagnostics; using Avalonia.Markup.Xaml; namespace AvaloniaSKPictureImageSample; @@ -19,5 +20,8 @@ public override void OnFrameworkInitializationCompleted() } base.OnFrameworkInitializationCompleted(); +#if DEBUG + this.AttachDevTools(); +#endif } } diff --git a/samples/AvaloniaSKPictureImageSample/AvaloniaSKPictureImageSample.csproj b/samples/AvaloniaSKPictureImageSample/AvaloniaSKPictureImageSample.csproj index b4b2f1dd23..128bee025c 100644 --- a/samples/AvaloniaSKPictureImageSample/AvaloniaSKPictureImageSample.csproj +++ b/samples/AvaloniaSKPictureImageSample/AvaloniaSKPictureImageSample.csproj @@ -7,6 +7,7 @@ enable latest False + false diff --git a/samples/AvaloniaSKPictureImageSample/MainWindow.axaml.cs b/samples/AvaloniaSKPictureImageSample/MainWindow.axaml.cs index c314fbea7e..5dd82b5ea7 100644 --- a/samples/AvaloniaSKPictureImageSample/MainWindow.axaml.cs +++ b/samples/AvaloniaSKPictureImageSample/MainWindow.axaml.cs @@ -9,9 +9,6 @@ public partial class MainWindow : Window public MainWindow() { InitializeComponent(); -#if DEBUG - this.AttachDevTools(); -#endif } private void InitializeComponent() diff --git a/samples/AvaloniaSvgSample/App.axaml.cs b/samples/AvaloniaSvgSample/App.axaml.cs index 81f4980ffd..9122219dfe 100644 --- a/samples/AvaloniaSvgSample/App.axaml.cs +++ b/samples/AvaloniaSvgSample/App.axaml.cs @@ -1,5 +1,6 @@ using Avalonia; using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Diagnostics; using Avalonia.Markup.Xaml; namespace AvaloniaSvgSample; @@ -19,5 +20,8 @@ public override void OnFrameworkInitializationCompleted() } base.OnFrameworkInitializationCompleted(); +#if DEBUG + this.AttachDevTools(); +#endif } } diff --git a/samples/AvaloniaSvgSample/MainWindow.axaml.cs b/samples/AvaloniaSvgSample/MainWindow.axaml.cs index e43538d58c..a4b479c216 100644 --- a/samples/AvaloniaSvgSample/MainWindow.axaml.cs +++ b/samples/AvaloniaSvgSample/MainWindow.axaml.cs @@ -5,6 +5,7 @@ using Avalonia.Input; using Avalonia.Markup.Xaml; using Avalonia.Media; +using Avalonia.Platform.Storage; using Avalonia.Svg; using ShimSkiaSharp; @@ -15,9 +16,6 @@ public partial class MainWindow : Window public MainWindow() { InitializeComponent(); -#if DEBUG - this.AttachDevTools(); -#endif svgSvgDockPanel.AddHandler(DragDrop.DropEvent, Drop); svgSvgDockPanel.AddHandler(DragDrop.DragOverEvent, DragOver); @@ -89,7 +87,7 @@ private void DragOver(object sender, DragEventArgs e) { e.DragEffects = e.DragEffects & (DragDropEffects.Copy | DragDropEffects.Link); - if (!e.Data.Contains(DataFormats.Files)) + if (e.DataTransfer.TryGetFiles() is not { Length: > 0 }) { e.DragEffects = DragDropEffects.None; } @@ -97,41 +95,41 @@ private void DragOver(object sender, DragEventArgs e) private void Drop(object sender, DragEventArgs e) { - if (e.Data.Contains(DataFormats.Files)) + var fileName = e.DataTransfer.TryGetFiles()? + .Select(file => file.TryGetLocalPath()) + .FirstOrDefault(path => !string.IsNullOrWhiteSpace(path)); + + if (!string.IsNullOrWhiteSpace(fileName)) { - var fileName = e.Data.GetFileNames()?.FirstOrDefault(); - if (!string.IsNullOrWhiteSpace(fileName)) + if (sender == svgSvgDockPanel) { - if (sender == svgSvgDockPanel) - { - svgSvg.Path = fileName; - } - else if (sender == svgExtensionDockPanel) - { - svgExtensionImage.Source = new SvgImage - { - Source = SvgSource.Load(fileName, null) - }; - } - else if (sender == svgSourceDockPanel) + svgSvg.Path = fileName; + } + else if (sender == svgExtensionDockPanel) + { + svgExtensionImage.Source = new SvgImage { - svgSourceImage.Source = new SvgImage - { - Source = SvgSource.Load(fileName, null) - }; - } - else if (sender == svgResourceDockPanel) + Source = SvgSource.Load(fileName, null) + }; + } + else if (sender == svgSourceDockPanel) + { + svgSourceImage.Source = new SvgImage { - svgResourceImage.Source = new SvgImage - { - Source = SvgSource.Load(fileName, null) - }; - } - else if (sender == stringTextBox || sender == svgString) + Source = SvgSource.Load(fileName, null) + }; + } + else if (sender == svgResourceDockPanel) + { + svgResourceImage.Source = new SvgImage { - var source = File.ReadAllText(fileName); - stringTextBox.Text = source; - } + Source = SvgSource.Load(fileName, null) + }; + } + else if (sender == stringTextBox || sender == svgString) + { + var source = File.ReadAllText(fileName); + stringTextBox.Text = source; } } } diff --git a/samples/AvaloniaSvgSkiaSample/App.axaml.cs b/samples/AvaloniaSvgSkiaSample/App.axaml.cs index c50c7e0b4c..f77ff6ab2d 100644 --- a/samples/AvaloniaSvgSkiaSample/App.axaml.cs +++ b/samples/AvaloniaSvgSkiaSample/App.axaml.cs @@ -1,5 +1,6 @@ using Avalonia; using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Diagnostics; using Avalonia.Markup.Xaml; namespace AvaloniaSvgSkiaSample; @@ -19,5 +20,8 @@ public override void OnFrameworkInitializationCompleted() } base.OnFrameworkInitializationCompleted(); +#if DEBUG + this.AttachDevTools(); +#endif } } diff --git a/samples/AvaloniaSvgSkiaSample/MainWindow.axaml.cs b/samples/AvaloniaSvgSkiaSample/MainWindow.axaml.cs index ad72030ba5..b4bd03831c 100644 --- a/samples/AvaloniaSvgSkiaSample/MainWindow.axaml.cs +++ b/samples/AvaloniaSvgSkiaSample/MainWindow.axaml.cs @@ -5,6 +5,7 @@ using Avalonia.Input; using Avalonia.Markup.Xaml; using Avalonia.Media; +using Avalonia.Platform.Storage; using Avalonia.Svg.Skia; using ShimSkiaSharp; @@ -15,9 +16,6 @@ public partial class MainWindow : Window public MainWindow() { InitializeComponent(); -#if DEBUG - this.AttachDevTools(); -#endif svgSvgDockPanel.AddHandler(DragDrop.DropEvent, Drop); svgSvgDockPanel.AddHandler(DragDrop.DragOverEvent, DragOver); @@ -89,7 +87,7 @@ private void DragOver(object sender, DragEventArgs e) { e.DragEffects = e.DragEffects & (DragDropEffects.Copy | DragDropEffects.Link); - if (!e.Data.Contains(DataFormats.Files)) + if (e.DataTransfer.TryGetFiles() is not { Length: > 0 }) { e.DragEffects = DragDropEffects.None; } @@ -97,54 +95,54 @@ private void DragOver(object sender, DragEventArgs e) private void Drop(object sender, DragEventArgs e) { - if (e.Data.Contains(DataFormats.Files)) + var fileName = e.DataTransfer.TryGetFiles()? + .Select(file => file.TryGetLocalPath()) + .FirstOrDefault(path => !string.IsNullOrWhiteSpace(path)); + + if (!string.IsNullOrWhiteSpace(fileName)) { - var fileName = e.Data.GetFileNames()?.FirstOrDefault(); - if (!string.IsNullOrWhiteSpace(fileName)) + if (sender == svgSvgDockPanel) { - if (sender == svgSvgDockPanel) - { - svgSvg.Path = fileName; - } - else if (sender == svgExtensionDockPanel) + svgSvg.Path = fileName; + } + else if (sender == svgExtensionDockPanel) + { + var svg = SvgSource.Load(fileName); + if (svg is { }) { - var svg = SvgSource.Load(fileName); - if (svg is { }) + svgExtensionImage.Source = new SvgImage { - svgExtensionImage.Source = new SvgImage - { - Source = svg - }; - } + Source = svg + }; } - else if (sender == svgSourceDockPanel) + } + else if (sender == svgSourceDockPanel) + { + var svg = SvgSource.Load(fileName); + if (svg is { }) { - var svg = SvgSource.Load(fileName); - if (svg is { }) + svgSourceImage.Source = new SvgImage { - svgSourceImage.Source = new SvgImage - { - Source = svg - }; - } + Source = svg + }; } - else if (sender == svgResourceDockPanel) + } + else if (sender == svgResourceDockPanel) + { + var svg = SvgSource.Load(fileName); + if (svg is { }) { - var svg = SvgSource.Load(fileName); - if (svg is { }) + svgResourceImage.Source = new SvgImage { - svgResourceImage.Source = new SvgImage - { - Source = svg - }; - } - } - else if (sender == stringTextBox || sender == svgString) - { - var source = File.ReadAllText(fileName); - stringTextBox.Text = source; + Source = svg + }; } } + else if (sender == stringTextBox || sender == svgString) + { + var source = File.ReadAllText(fileName); + stringTextBox.Text = source; + } } } diff --git a/samples/AvaloniaSvgSkiaStylingSample/App.axaml.cs b/samples/AvaloniaSvgSkiaStylingSample/App.axaml.cs index 0c33b33fe6..b094a37b67 100644 --- a/samples/AvaloniaSvgSkiaStylingSample/App.axaml.cs +++ b/samples/AvaloniaSvgSkiaStylingSample/App.axaml.cs @@ -1,5 +1,6 @@ using Avalonia; using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Diagnostics; using Avalonia.Markup.Xaml; namespace AvaloniaSvgSkiaStylingSample; @@ -19,5 +20,8 @@ public override void OnFrameworkInitializationCompleted() } base.OnFrameworkInitializationCompleted(); +#if DEBUG + this.AttachDevTools(); +#endif } } diff --git a/samples/AvaloniaSvgSkiaStylingSample/MainWindow.axaml.cs b/samples/AvaloniaSvgSkiaStylingSample/MainWindow.axaml.cs index db7b1c4d5e..52f5fc8858 100644 --- a/samples/AvaloniaSvgSkiaStylingSample/MainWindow.axaml.cs +++ b/samples/AvaloniaSvgSkiaStylingSample/MainWindow.axaml.cs @@ -12,9 +12,6 @@ public partial class MainWindow : Window public MainWindow() { InitializeComponent(); -#if DEBUG - this.AttachDevTools(); -#endif ApplySvgStyleButton.Click += ApplySvgStyleButtonClick; ApplySvgImageStyleButton.Click += ApplySvgImageStyleButtonClick; } diff --git a/samples/TestApp/App.axaml.cs b/samples/TestApp/App.axaml.cs index 1a4bb0432c..96699bc176 100644 --- a/samples/TestApp/App.axaml.cs +++ b/samples/TestApp/App.axaml.cs @@ -3,6 +3,7 @@ using System.IO; using Avalonia; using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Diagnostics; using Avalonia.Markup.Xaml; using TestApp.Services; using TestApp.ViewModels; @@ -79,5 +80,8 @@ public override void OnFrameworkInitializationCompleted() } base.OnFrameworkInitializationCompleted(); +#if DEBUG + this.AttachDevTools(); +#endif } } diff --git a/samples/TestApp/Services/StorageService.cs b/samples/TestApp/Services/StorageService.cs index 46a4bd4ab4..73a935f028 100644 --- a/samples/TestApp/Services/StorageService.cs +++ b/samples/TestApp/Services/StorageService.cs @@ -159,10 +159,11 @@ public async Task> PickSvgPathsAsync(CancellationToken can return window.StorageProvider; } - if (Application.Current?.ApplicationLifetime is ISingleViewApplicationLifetime { MainView: { } mainView }) + if (Application.Current?.ApplicationLifetime is ISingleViewApplicationLifetime { MainView: { } mainView } && + mainView is Visual visual) { - var visualRoot = mainView.GetVisualRoot(); - if (visualRoot is TopLevel topLevel) + var topLevel = TopLevel.GetTopLevel(visual); + if (topLevel is not null) { return topLevel.StorageProvider; } diff --git a/samples/TestApp/TestApp.csproj b/samples/TestApp/TestApp.csproj index d2f9f32143..7f5a759eaf 100644 --- a/samples/TestApp/TestApp.csproj +++ b/samples/TestApp/TestApp.csproj @@ -8,6 +8,9 @@ TestApp + + false + @@ -26,5 +29,4 @@ - diff --git a/samples/TestApp/Views/MainView.axaml b/samples/TestApp/Views/MainView.axaml index 1f53613e17..8d75ab6210 100644 --- a/samples/TestApp/Views/MainView.axaml +++ b/samples/TestApp/Views/MainView.axaml @@ -21,7 +21,7 @@ Grid.Row="0" Margin="6" Text="{Binding ItemQuery}" - Watermark="Filter..."> + PlaceholderText="Filter...">