diff options
Diffstat (limited to 'src/Ryujinx/UI/Windows/MainWindow.axaml.cs')
-rw-r--r-- | src/Ryujinx/UI/Windows/MainWindow.axaml.cs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/Ryujinx/UI/Windows/MainWindow.axaml.cs b/src/Ryujinx/UI/Windows/MainWindow.axaml.cs index b1b7a485..7de8a49a 100644 --- a/src/Ryujinx/UI/Windows/MainWindow.axaml.cs +++ b/src/Ryujinx/UI/Windows/MainWindow.axaml.cs @@ -2,6 +2,7 @@ using Avalonia; using Avalonia.Controls; using Avalonia.Controls.Primitives; using Avalonia.Interactivity; +using Avalonia.Platform; using Avalonia.Threading; using FluentAvalonia.UI.Controls; using Ryujinx.Ava.Common; @@ -92,6 +93,29 @@ namespace Ryujinx.Ava.UI.Windows } } + /// <summary> + /// Event handler for detecting OS theme change when using "Follow OS theme" option + /// </summary> + private void OnPlatformColorValuesChanged(object sender, PlatformColorValues e) + { + if (Application.Current is App app) + { + app.ApplyConfiguredTheme(); + } + } + + protected override void OnClosed(EventArgs e) + { + base.OnClosed(e); + if (PlatformSettings != null) + { + /// <summary> + /// Unsubscribe to the ColorValuesChanged event + /// </summary> + PlatformSettings.ColorValuesChanged -= OnPlatformColorValuesChanged; + } + } + protected override void OnApplyTemplate(TemplateAppliedEventArgs e) { base.OnApplyTemplate(e); @@ -390,6 +414,11 @@ namespace Ryujinx.Ava.UI.Windows Initialize(); + /// <summary> + /// Subscribe to the ColorValuesChanged event + /// </summary> + PlatformSettings.ColorValuesChanged += OnPlatformColorValuesChanged; + ViewModel.Initialize( ContentManager, StorageProvider, |