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