From de4415274e59b2e3181664212071d134ec9b58a8 Mon Sep 17 00:00:00 2001 From: Max Katz Date: Tue, 15 Nov 2022 02:02:19 -0500 Subject: [PATCH] Fix devtools not making screenshots --- .../Screenshots/FilePickerHandler.cs | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/src/Avalonia.Diagnostics/Diagnostics/Screenshots/FilePickerHandler.cs b/src/Avalonia.Diagnostics/Diagnostics/Screenshots/FilePickerHandler.cs index a4b56fcea1..501746ffb0 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/Screenshots/FilePickerHandler.cs +++ b/src/Avalonia.Diagnostics/Diagnostics/Screenshots/FilePickerHandler.cs @@ -1,4 +1,5 @@ -using System.IO; +using System; +using System.IO; using System.Linq; using System.Threading.Tasks; using Avalonia.Controls; @@ -57,31 +58,25 @@ namespace Avalonia.Diagnostics.Screenshots return window!; } - protected async override Task GetStream(IControl control) + protected override async Task GetStream(IControl control) { - Stream? output = default; var result = await GetWindow(control).StorageProvider.SaveFilePickerAsync(new FilePickerSaveOptions { SuggestedStartLocation = new BclStorageFolder(new DirectoryInfo(ScreenshotsRoot)), Title = Title, - FileTypeChoices = new FilePickerFileType[] { new FilePickerFileType("PNG") { Patterns = new string[] { "*.png" } } } + FileTypeChoices = new FilePickerFileType[] { new FilePickerFileType("PNG") { Patterns = new string[] { "*.png" } } }, + DefaultExtension = ".png" }); - - if (result!=null && !string.IsNullOrWhiteSpace(result.Name)) + if (result is null) + { + return null; + } + if (!result.CanOpenWrite) { - var folder = Path.GetDirectoryName(result.Name); - // Directory information for path, or null if path denotes a root directory or is - // null. Returns System.String.Empty if path does not contain directory information. - if (!string.IsNullOrWhiteSpace(folder)) - { - if (!Directory.Exists(folder)) - { - Directory.CreateDirectory(folder); - } - output = new FileStream(result.Name, FileMode.Create); - } + throw new InvalidOperationException("ReadOnly file was opened"); } - return output; + + return await result.OpenWriteAsync(); } } }