Browse Source

allow any div to be turned into a toplevel.

pull/9028/head
Dan Walmsley 4 years ago
parent
commit
c19797988c
  1. 9
      src/Web/Avalonia.Web.Sample/Avalonia.Web.Sample.csproj
  2. 2
      src/Web/Avalonia.Web.Sample/Program.cs
  3. 2
      src/Web/Avalonia.Web/AvaloniaRuntime.cs
  4. 7
      src/Web/Avalonia.Web/AvaloniaView.cs
  5. 13
      src/Web/Avalonia.Web/BlazorSingleViewLifetime.cs

9
src/Web/Avalonia.Web.Sample/Avalonia.Web.Sample.csproj

@ -7,10 +7,17 @@
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<MSBuildEnableWorkloadResolver>true</MSBuildEnableWorkloadResolver>
<WasmBuildNative>true</WasmBuildNative>
<EmccFlags>-sVERBOSE</EmccFlags>
<EmccFlags>-sVERBOSE -sERROR_ON_UNDEFINED_SYMBOLS=0</EmccFlags>
<EmccExtraLDFlags>--js-library="C:\Users\User\repos\Avalonia\src\Web\Avalonia.Web.Sample\interop.js"</EmccExtraLDFlags>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'">
<RunAOTCompilation>true</RunAOTCompilation>
<PublishTrimmed>true</PublishTrimmed>
<EmccCompileOptimizationFlag>-O3</EmccCompileOptimizationFlag>
<EmccLinkOptimizationFlag>-O3</EmccLinkOptimizationFlag>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\samples\ControlCatalog\ControlCatalog.csproj" />
<ProjectReference Include="..\Avalonia.Web\Avalonia.Web.csproj" />

2
src/Web/Avalonia.Web.Sample/Program.cs

@ -18,7 +18,7 @@ internal partial class Program
private static void Main(string[] args)
{
BuildAvaloniaApp().UseBrowserWasm();
BuildAvaloniaApp().SetupBrowserApp("out1");
}
public static AppBuilder BuildAvaloniaApp()

2
src/Web/Avalonia.Web/AvaloniaRuntime.cs

@ -35,7 +35,7 @@ public partial class AvaloniaRuntime
{
InterceptGLObject();
var info = InitGL(canvas, "testCanvas", renderFrameCallback);
var info = InitGL(canvas, canvas.GetPropertyAsString("id")!, renderFrameCallback);
var glInfo = new GLInfo(

7
src/Web/Avalonia.Web/AvaloniaView.cs

@ -47,13 +47,14 @@ namespace Avalonia.Web
private bool _useGL;
private bool _inputElementFocused;
private static int _canvasCount;
public AvaloniaView()
public AvaloniaView(string divId)
{
var div = GetElementById("out");
var div = GetElementById(divId);
_canvas = CreateCanvas(div);
_canvas.SetProperty("id", "mycanvas");
_canvas.SetProperty("id", $"avaloniaCanvas{_canvasCount++}");
_topLevelImpl = new RazorViewTopLevelImpl(this);

13
src/Web/Avalonia.Web/BlazorSingleViewLifetime.cs

@ -19,13 +19,10 @@ namespace Avalonia.Web.Blazor
public static partial class WebAppBuilder
{
public static T UseBrowserWasm<T>(
this T builder)
public static T SetupBrowserApp<T>(
this T builder, string mainDivId)
where T : AppBuilderBase<T>, new()
{
Console.WriteLine("In UseBrowserWasm");
var lifetime = new BlazorSingleViewLifetime();
return builder
@ -34,13 +31,9 @@ namespace Avalonia.Web.Blazor
.With(new SkiaOptions { CustomGpuFactory = () => new BlazorSkiaGpu() })
.AfterSetup(b =>
{
var view = new AvaloniaView();
lifetime.View = view;
Console.WriteLine("After setup");
lifetime.View = new AvaloniaView(mainDivId);
})
.SetupWithLifetime(lifetime);
}
}
}

Loading…
Cancel
Save