From e404d02965abeea1cccf522577a841d56fd54d52 Mon Sep 17 00:00:00 2001
From: Jack251970 <1160210343@qq.com>
Date: Tue, 6 Jan 2026 15:13:37 +0800
Subject: [PATCH] Update the result when executing history item
---
Flow.Launcher/Storage/QueryHistory.cs | 22 ++++++++++++++++++++++
Flow.Launcher/ViewModel/MainViewModel.cs | 3 +++
2 files changed, 25 insertions(+)
diff --git a/Flow.Launcher/Storage/QueryHistory.cs b/Flow.Launcher/Storage/QueryHistory.cs
index 6af2a5908..20e295f02 100644
--- a/Flow.Launcher/Storage/QueryHistory.cs
+++ b/Flow.Launcher/Storage/QueryHistory.cs
@@ -86,6 +86,28 @@ namespace Flow.Launcher.Storage
}
}
+ ///
+ /// Update a result into the last-opened history list ().
+ ///
+ public void Update(Result result)
+ {
+ if (string.IsNullOrEmpty(result.OriginQuery.TrimmedQuery)) return;
+ // History results triggered from homepage do not contain PluginID,
+ // these are intentionally not saved otherwise cause duplicates due to subtitle
+ // containing datetime string.
+ if (string.IsNullOrEmpty(result.PluginID)) return;
+
+ // If the last item is the same as the current result, just update the icon path
+ if (LastOpenedHistoryItems.Count > 0 &&
+ TryGetLastOpenedHistoryResult(result, out var existingHistoryItem))
+ {
+ if (existingHistoryItem.IcoPath != result.IcoPath)
+ {
+ existingHistoryItem.IcoPath = result.IcoPath;
+ }
+ }
+ }
+
///
/// Attempts to find an existing in
/// that is considered equal to the supplied .
diff --git a/Flow.Launcher/ViewModel/MainViewModel.cs b/Flow.Launcher/ViewModel/MainViewModel.cs
index 7e5869b65..1aee20e5b 100644
--- a/Flow.Launcher/ViewModel/MainViewModel.cs
+++ b/Flow.Launcher/ViewModel/MainViewModel.cs
@@ -1383,6 +1383,9 @@ namespace Flow.Launcher.ViewModel
// Record the user selected record for result ranking
_userSelectedRecord.Add(reflectResult);
+ // Update the history with the reflected result
+ _history.Update(reflectResult);
+
// Since some actions may need to hide the Flow window to execute
// So let us populate the results of them
return await reflectResult.ExecuteAsync(c);