From 314e58aa4a17a3517c9a7cc87948e38814829d5d Mon Sep 17 00:00:00 2001 From: Maxwell Katz Date: Thu, 20 Mar 2025 14:38:36 +0700 Subject: [PATCH] Make mobile TryGetPlatformHandle consistent (#18483) * Use AndroidViewControlHandle for android toplevel handle * Use UIViewControlHandle for iOS toplevel handle * Use JSObjectControlHandle for browser toplevel handle * Revert NativeControlHostImpl changes --- .../Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs | 5 +++-- src/Browser/Avalonia.Browser/BrowserTopLevelImpl.cs | 2 ++ src/iOS/Avalonia.iOS/AvaloniaView.cs | 2 ++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs b/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs index 2fb8c5047c..bd90a91483 100644 --- a/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs +++ b/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs @@ -78,7 +78,8 @@ namespace Avalonia.Android.Platform.SkiaPlatform _systemNavigationManager = new AndroidSystemNavigationManagerImpl(avaloniaView.Context as IActivityNavigationService); - Surfaces = new object[] { _gl, _framebuffer, Handle }; + Surfaces = new object[] { _gl, _framebuffer, _view }; + Handle = new AndroidViewControlHandle(_view); } public IInputRoot? InputRoot { get; private set; } @@ -102,7 +103,7 @@ namespace Avalonia.Android.Platform.SkiaPlatform internal InvalidationAwareSurfaceView InternalView => _view; public double DesktopScaling => RenderScaling; - public IPlatformHandle Handle => _view; + public IPlatformHandle Handle { get; } public IEnumerable Surfaces { get; } diff --git a/src/Browser/Avalonia.Browser/BrowserTopLevelImpl.cs b/src/Browser/Avalonia.Browser/BrowserTopLevelImpl.cs index df010953d9..56f25e4ac3 100644 --- a/src/Browser/Avalonia.Browser/BrowserTopLevelImpl.cs +++ b/src/Browser/Avalonia.Browser/BrowserTopLevelImpl.cs @@ -70,6 +70,8 @@ namespace Avalonia.Browser _surface.SizeChanged += OnSizeChanged; _surface.ScalingChanged += OnScalingChanged; Compositor = _surface.Compositor; + + Handle = new JSObjectControlHandle(container); } private void OnScalingChanged() diff --git a/src/iOS/Avalonia.iOS/AvaloniaView.cs b/src/iOS/Avalonia.iOS/AvaloniaView.cs index 4248987d34..215713fae8 100644 --- a/src/iOS/Avalonia.iOS/AvaloniaView.cs +++ b/src/iOS/Avalonia.iOS/AvaloniaView.cs @@ -156,6 +156,8 @@ namespace Avalonia.iOS public TopLevelImpl(AvaloniaView view) { _view = view; + Handle = new UIViewControlHandle(_view); + _nativeControlHost = new NativeControlHostImpl(view); #if TVOS _storageProvider = null;