From 2ac8849fb0d2799f021cef2db216937c367a1bec Mon Sep 17 00:00:00 2001 From: Max Katz Date: Wed, 24 May 2023 04:05:53 -0400 Subject: [PATCH 1/2] Fix Browser not wrapping file handles into StorageItem object --- src/Browser/Avalonia.Browser/Interop/StorageHelper.cs | 3 +++ .../Avalonia.Browser/Storage/BrowserStorageProvider.cs | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Browser/Avalonia.Browser/Interop/StorageHelper.cs b/src/Browser/Avalonia.Browser/Interop/StorageHelper.cs index d95d4405ba..c28efbb308 100644 --- a/src/Browser/Avalonia.Browser/Interop/StorageHelper.cs +++ b/src/Browser/Avalonia.Browser/Interop/StorageHelper.cs @@ -39,6 +39,9 @@ internal static partial class StorageHelper [JSImport("StorageItem.openRead", AvaloniaModule.StorageModuleName)] public static partial Task OpenRead(JSObject item); + + [JSImport("StorageItem.createFromHandle", AvaloniaModule.StorageModuleName)] + public static partial JSObject? StorageItemFromHandle(JSObject handle); [JSImport("StorageItem.getItemsIterator", AvaloniaModule.StorageModuleName)] [return: JSMarshalAs] diff --git a/src/Browser/Avalonia.Browser/Storage/BrowserStorageProvider.cs b/src/Browser/Avalonia.Browser/Storage/BrowserStorageProvider.cs index a28fd4cbde..ef34826238 100644 --- a/src/Browser/Avalonia.Browser/Storage/BrowserStorageProvider.cs +++ b/src/Browser/Avalonia.Browser/Storage/BrowserStorageProvider.cs @@ -319,13 +319,14 @@ internal class JSStorageFolder : JSStorageItem, IStorageBookmarkFolder } var kind = storageItem.GetPropertyAsString("kind"); + var item = StorageHelper.StorageItemFromHandle(storageItem)!; switch (kind) { case "directory": - yield return new JSStorageFolder(storageItem); + yield return new JSStorageFolder(item); break; case "file": - yield return new JSStorageFile(storageItem); + yield return new JSStorageFile(item); break; } } From 6c5c13aa5cb7958d2a97337612665d4ee71439c6 Mon Sep 17 00:00:00 2001 From: Max Katz Date: Wed, 24 May 2023 04:22:23 -0400 Subject: [PATCH 2/2] Fix ICustomDrawOperation and browser splash screen --- .../Composition/Drawing/RenderDataDrawingContext.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.Base/Rendering/Composition/Drawing/RenderDataDrawingContext.cs b/src/Avalonia.Base/Rendering/Composition/Drawing/RenderDataDrawingContext.cs index 3d5033086e..971ae1d8aa 100644 --- a/src/Avalonia.Base/Rendering/Composition/Drawing/RenderDataDrawingContext.cs +++ b/src/Avalonia.Base/Rendering/Composition/Drawing/RenderDataDrawingContext.cs @@ -177,7 +177,10 @@ internal class RenderDataDrawingContext : DrawingContext }); } - public override void Custom(ICustomDrawOperation custom) => Add(new RenderDataCustomNode()); + public override void Custom(ICustomDrawOperation custom) => Add(new RenderDataCustomNode + { + Operation = custom + }); public override void DrawGlyphRun(IBrush? foreground, GlyphRun? glyphRun) {