From 3b235f9aa82dbcae024c0e75486e7d91df1be13d Mon Sep 17 00:00:00 2001 From: Emmanuel Hansen Date: Fri, 28 Jun 2024 20:15:54 +0000 Subject: [PATCH] Toplevel - Fix system theme not being applied at launch on some platforms (#16159) * move platformbinding for theme variant from WindowBase up to TopLevel. * remvoe visibility check in android insets manager for system theme --- .../Avalonia.Android/Platform/AndroidInsetsManager.cs | 10 ---------- src/Avalonia.Controls/TopLevel.cs | 5 +++++ src/Avalonia.Controls/WindowBase.cs | 5 ----- 3 files changed, 5 insertions(+), 15 deletions(-) diff --git a/src/Android/Avalonia.Android/Platform/AndroidInsetsManager.cs b/src/Android/Avalonia.Android/Platform/AndroidInsetsManager.cs index 18cad0aebf..c78945d4a0 100644 --- a/src/Android/Avalonia.Android/Platform/AndroidInsetsManager.cs +++ b/src/Android/Avalonia.Android/Platform/AndroidInsetsManager.cs @@ -191,11 +191,6 @@ namespace Avalonia.Android.Platform { _statusBarTheme = value; - if (!_topLevel.View.IsShown) - { - return; - } - var compat = new WindowInsetsControllerCompat(Window, _topLevel.View); if (_isDefaultSystemBarLightTheme == null) @@ -229,11 +224,6 @@ namespace Avalonia.Android.Platform { _systemUiVisibility = value; - if (!_topLevel.View.IsShown) - { - return; - } - var compat = WindowCompat.GetInsetsController(Window, _topLevel.View); if (value == null || value.Value) diff --git a/src/Avalonia.Controls/TopLevel.cs b/src/Avalonia.Controls/TopLevel.cs index b9b0c29523..e6957ddda4 100644 --- a/src/Avalonia.Controls/TopLevel.cs +++ b/src/Avalonia.Controls/TopLevel.cs @@ -232,6 +232,11 @@ namespace Avalonia.Controls impl.TransparencyLevelChanged = HandleTransparencyLevelChanged; CreatePlatformImplBinding(TransparencyLevelHintProperty, hint => PlatformImpl.SetTransparencyLevelHint(hint ?? Array.Empty())); + CreatePlatformImplBinding(ActualThemeVariantProperty, variant => + { + variant ??= ThemeVariant.Default; + PlatformImpl?.SetFrameThemeVariant((PlatformThemeVariant?)variant ?? PlatformThemeVariant.Light); + }); _keyboardNavigationHandler?.SetOwner(this); _accessKeyHandler?.SetOwner(this); diff --git a/src/Avalonia.Controls/WindowBase.cs b/src/Avalonia.Controls/WindowBase.cs index 6715c8e4bc..fa4db1b6b9 100644 --- a/src/Avalonia.Controls/WindowBase.cs +++ b/src/Avalonia.Controls/WindowBase.cs @@ -48,11 +48,6 @@ namespace Avalonia.Controls public WindowBase(IWindowBaseImpl impl) : this(impl, AvaloniaLocator.Current) { CreatePlatformImplBinding(TopmostProperty, topmost => PlatformImpl!.SetTopmost(topmost)); - CreatePlatformImplBinding(ActualThemeVariantProperty, variant => - { - variant ??= ThemeVariant.Default; - PlatformImpl?.SetFrameThemeVariant((PlatformThemeVariant?)variant ?? PlatformThemeVariant.Light); - }); FrameSize = impl.FrameSize; }