From f0aa285199266843b447635a1cafa8aa5f0c97bd Mon Sep 17 00:00:00 2001 From: DB P Date: Wed, 14 May 2025 12:50:45 +0900 Subject: [PATCH 1/3] Add theme change handler to refresh frame on application theme change --- Flow.Launcher/MainWindow.xaml.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs index 46eeb2adc6e..0b7ebf14811 100644 --- a/Flow.Launcher/MainWindow.xaml.cs +++ b/Flow.Launcher/MainWindow.xaml.cs @@ -89,7 +89,7 @@ public MainWindow() InitSoundEffects(); DataObject.AddPastingHandler(QueryTextBox, QueryTextBox_OnPaste); - + ModernWpf.ThemeManager.Current.ActualApplicationThemeChanged += ThemeManager_ActualApplicationThemeChanged; SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged; } @@ -543,6 +543,10 @@ private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref b #region Window Sound Effects + private void ThemeManager_ActualApplicationThemeChanged(ModernWpf.ThemeManager sender, object args) + { + _theme.RefreshFrameAsync(); + } private void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e) { // Fix for sound not playing after sleep / hibernate From 1e51bdc37b147cd4c9125951e7953d28da7142e0 Mon Sep 17 00:00:00 2001 From: DB P Date: Wed, 14 May 2025 13:03:31 +0900 Subject: [PATCH 2/3] Unsubscribe from theme change event to prevent memory leaks --- Flow.Launcher/MainWindow.xaml.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs index 0b7ebf14811..ab26d417c60 100644 --- a/Flow.Launcher/MainWindow.xaml.cs +++ b/Flow.Launcher/MainWindow.xaml.cs @@ -1184,6 +1184,7 @@ protected virtual void Dispose(bool disposing) _notifyIcon?.Dispose(); animationSoundWMP?.Close(); animationSoundWPF?.Dispose(); + ModernWpf.ThemeManager.Current.ActualApplicationThemeChanged -= ThemeManager_ActualApplicationThemeChanged; SystemEvents.PowerModeChanged -= SystemEvents_PowerModeChanged; } From c128a667722ece5c67b3370765a0c2d5e83bc9f3 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Wed, 14 May 2025 12:09:18 +0800 Subject: [PATCH 3/3] Manage handle in dispose --- Flow.Launcher/MainWindow.xaml.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs index 0b7ebf14811..4465c8e33ae 100644 --- a/Flow.Launcher/MainWindow.xaml.cs +++ b/Flow.Launcher/MainWindow.xaml.cs @@ -99,6 +99,11 @@ public MainWindow() #pragma warning disable VSTHRD100 // Avoid async void methods + private void ThemeManager_ActualApplicationThemeChanged(ModernWpf.ThemeManager sender, object args) + { + _theme.RefreshFrameAsync(); + } + private void OnSourceInitialized(object sender, EventArgs e) { var handle = Win32Helper.GetWindowHandle(this, true); @@ -543,10 +548,6 @@ private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref b #region Window Sound Effects - private void ThemeManager_ActualApplicationThemeChanged(ModernWpf.ThemeManager sender, object args) - { - _theme.RefreshFrameAsync(); - } private void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e) { // Fix for sound not playing after sleep / hibernate @@ -1184,6 +1185,7 @@ protected virtual void Dispose(bool disposing) _notifyIcon?.Dispose(); animationSoundWMP?.Close(); animationSoundWPF?.Dispose(); + ModernWpf.ThemeManager.Current.ActualApplicationThemeChanged -= ThemeManager_ActualApplicationThemeChanged; SystemEvents.PowerModeChanged -= SystemEvents_PowerModeChanged; }