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);