From 5b2b272f7665993a03dc58264b513136008f9736 Mon Sep 17 00:00:00 2001
From: Jack251970 <1160210343@qq.com>
Date: Sat, 5 Jul 2025 13:35:02 +0800
Subject: [PATCH] Add ActualApplicationThemeChanged in MainViewModel
---
Flow.Launcher.Plugin/EventHandler.cs | 20 +++++++++++++++++++-
Flow.Launcher/ViewModel/MainViewModel.cs | 15 +++++++++++++++
2 files changed, 34 insertions(+), 1 deletion(-)
diff --git a/Flow.Launcher.Plugin/EventHandler.cs b/Flow.Launcher.Plugin/EventHandler.cs
index 893b0ba80..47ab24757 100644
--- a/Flow.Launcher.Plugin/EventHandler.cs
+++ b/Flow.Launcher.Plugin/EventHandler.cs
@@ -39,7 +39,14 @@ namespace Flow.Launcher.Plugin
///
///
public delegate void VisibilityChangedEventHandler(object sender, VisibilityChangedEventArgs args);
-
+
+ ///
+ /// A delegate for when the actual application theme is changed
+ ///
+ ///
+ ///
+ public delegate void ActualApplicationThemeChangedEventHandler(object sender, ActualApplicationThemeChangedEventArgs args);
+
///
/// The event args for
///
@@ -77,4 +84,15 @@ namespace Flow.Launcher.Plugin
///
public Query Query { get; set; }
}
+
+ ///
+ /// The event args for
+ ///
+ public class ActualApplicationThemeChangedEventArgs : EventArgs
+ {
+ ///
+ /// if the application has changed actual theme
+ ///
+ public bool IsDark { get; init; }
+ }
}
diff --git a/Flow.Launcher/ViewModel/MainViewModel.cs b/Flow.Launcher/ViewModel/MainViewModel.cs
index 64a39fa62..49f7ea6c5 100644
--- a/Flow.Launcher/ViewModel/MainViewModel.cs
+++ b/Flow.Launcher/ViewModel/MainViewModel.cs
@@ -22,6 +22,7 @@ using Flow.Launcher.Plugin;
using Flow.Launcher.Plugin.SharedCommands;
using Flow.Launcher.Storage;
using Microsoft.VisualStudio.Threading;
+using ModernWpf;
namespace Flow.Launcher.ViewModel
{
@@ -195,6 +196,18 @@ namespace Flow.Launcher.ViewModel
RegisterViewUpdate();
_ = RegisterClockAndDateUpdateAsync();
+
+ ThemeManager.Current.ActualApplicationThemeChanged += ThemeManager_ActualApplicationThemeChanged;
+ }
+
+ private void ThemeManager_ActualApplicationThemeChanged(ThemeManager sender, object args)
+ {
+ ActualApplicationThemeChanged?.Invoke(
+ Application.Current,
+ new ActualApplicationThemeChangedEventArgs()
+ {
+ IsDark = sender.ActualApplicationTheme == ApplicationTheme.Dark
+ });
}
private void RegisterViewUpdate()
@@ -821,6 +834,7 @@ namespace Flow.Launcher.ViewModel
public bool MainWindowVisibilityStatus { get; set; } = true;
public event VisibilityChangedEventHandler VisibilityChanged;
+ public event ActualApplicationThemeChangedEventHandler ActualApplicationThemeChanged;
public Visibility ClockPanelVisibility { get; set; }
public Visibility SearchIconVisibility { get; set; }
@@ -1975,6 +1989,7 @@ namespace Flow.Launcher.ViewModel
{
_resultsViewUpdateTask.Dispose();
}
+ ThemeManager.Current.ActualApplicationThemeChanged -= ThemeManager_ActualApplicationThemeChanged;
_disposed = true;
}
}