aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx/UI/Windows/MainWindow.axaml.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx/UI/Windows/MainWindow.axaml.cs')
-rw-r--r--src/Ryujinx/UI/Windows/MainWindow.axaml.cs29
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,