diff --git a/src/modules/launcher/PowerLauncher/ViewModel/MainViewModel.cs b/src/modules/launcher/PowerLauncher/ViewModel/MainViewModel.cs
index 1b2f70f3e8..208e62fb28 100644
--- a/src/modules/launcher/PowerLauncher/ViewModel/MainViewModel.cs
+++ b/src/modules/launcher/PowerLauncher/ViewModel/MainViewModel.cs
@@ -31,7 +31,7 @@ namespace PowerLauncher.ViewModel
{
#region Private Fields
- private Query _lastQuery;
+ private Query _currentQuery;
private static Query _emptyQuery = new Query();
private static bool _disposed;
private string _queryTextBeforeLeaveResults;
@@ -65,7 +65,7 @@ namespace PowerLauncher.ViewModel
_hotkeyManager = new HotkeyManager();
_saved = false;
_queryTextBeforeLeaveResults = "";
- _lastQuery = _emptyQuery;
+ _currentQuery = _emptyQuery;
_disposed = false;
_settings = settings ?? throw new ArgumentNullException(nameof(settings));
@@ -118,7 +118,7 @@ namespace PowerLauncher.ViewModel
Task.Run(() =>
{
PluginManager.UpdatePluginMetadata(e.Results, pair.Metadata, e.Query);
- UpdateResultView(e.Results, pair.Metadata, e.Query, _updateToken);
+ UpdateResultView(e.Results, e.Query, _updateToken);
}, _updateToken);
};
}
@@ -413,7 +413,6 @@ namespace PowerLauncher.ViewModel
private void QueryHistory()
{
- const string id = "Query History ID";
#pragma warning disable CA1308 // Normalize strings to uppercase
var query = QueryText.ToLower(CultureInfo.InvariantCulture).Trim();
#pragma warning restore CA1308 // Normalize strings to uppercase
@@ -447,11 +446,11 @@ namespace PowerLauncher.ViewModel
r => StringMatcher.FuzzySearch(query, r.Title).IsSearchPrecisionScoreMet() ||
StringMatcher.FuzzySearch(query, r.SubTitle).IsSearchPrecisionScoreMet()
).ToList();
- History.AddResults(filtered, id, _updateToken);
+ History.AddResults(filtered, _updateToken);
}
else
{
- History.AddResults(results, id, _updateToken);
+ History.AddResults(results, _updateToken);
}
}
@@ -470,7 +469,7 @@ namespace PowerLauncher.ViewModel
var query = QueryBuilder.Build(QueryText.Trim(), PluginManager.NonGlobalPlugins);
if (query != null)
{
- _lastQuery = query;
+ _currentQuery = query;
Task.Run(() =>
{
Thread.Sleep(20);
@@ -493,21 +492,24 @@ namespace PowerLauncher.ViewModel
lock (_addResultsLock)
{
- RemoveOldQueryResults(query);
- foreach (var p in resultPluginPair)
+ if (query.RawQuery == _currentQuery.RawQuery)
{
- UpdateResultView(p.Item1, p.Item2, query, currentCancellationToken);
- currentCancellationToken.ThrowIfCancellationRequested();
- }
+ Results.Clear();
+ foreach (var p in resultPluginPair)
+ {
+ UpdateResultView(p.Item1, query, currentCancellationToken);
+ currentCancellationToken.ThrowIfCancellationRequested();
+ }
- currentCancellationToken.ThrowIfCancellationRequested();
- Results.Results.Sort();
+ currentCancellationToken.ThrowIfCancellationRequested();
+ Results.Results.Sort();
+ }
}
currentCancellationToken.ThrowIfCancellationRequested();
Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
- if (query.RawQuery == _lastQuery.RawQuery)
+ if (query.RawQuery == _currentQuery.RawQuery)
{
Results.Results.NotifyChanges();
}
@@ -542,37 +544,13 @@ namespace PowerLauncher.ViewModel
else
{
_updateSource?.Cancel();
- _lastQuery = _emptyQuery;
+ _currentQuery = _emptyQuery;
Results.SelectedItem = null;
Results.Visibility = Visibility.Hidden;
Results.Clear();
}
}
- private void RemoveOldQueryResults(Query query)
- {
- string lastKeyword = _lastQuery.ActionKeyword;
- string keyword = query.ActionKeyword;
- if (string.IsNullOrEmpty(lastKeyword))
- {
- if (!string.IsNullOrEmpty(keyword))
- {
- Results.RemoveResultsExcept(PluginManager.NonGlobalPlugins[keyword].Metadata);
- }
- }
- else
- {
- if (string.IsNullOrEmpty(keyword))
- {
- Results.RemoveResultsFor(PluginManager.NonGlobalPlugins[lastKeyword].Metadata);
- }
- else if (lastKeyword != keyword)
- {
- Results.RemoveResultsExcept(PluginManager.NonGlobalPlugins[keyword].Metadata);
- }
- }
- }
-
private bool SelectedIsFromQueryResults()
{
var selected = SelectedResults == Results;
@@ -714,18 +692,13 @@ namespace PowerLauncher.ViewModel
///
/// To avoid deadlock, this method should not called from main thread
///
- public void UpdateResultView(List list, PluginMetadata metadata, Query originQuery, CancellationToken ct)
+ public void UpdateResultView(List list, Query originQuery, CancellationToken ct)
{
if (list == null)
{
throw new ArgumentNullException(nameof(list));
}
- if (metadata == null)
- {
- throw new ArgumentNullException(nameof(metadata));
- }
-
if (originQuery == null)
{
throw new ArgumentNullException(nameof(originQuery));
@@ -743,10 +716,10 @@ namespace PowerLauncher.ViewModel
}
}
- if (originQuery.RawQuery == _lastQuery.RawQuery)
+ if (originQuery.RawQuery == _currentQuery.RawQuery)
{
ct.ThrowIfCancellationRequested();
- Results.AddResults(list, metadata.ID, ct);
+ Results.AddResults(list, ct);
}
}
@@ -759,7 +732,7 @@ namespace PowerLauncher.ViewModel
Title = "hello"
};
list.Add(r);
- Results.AddResults(list, "0", _updateToken);
+ Results.AddResults(list, _updateToken);
Results.Clear();
MainWindowVisibility = System.Windows.Visibility.Collapsed;
diff --git a/src/modules/launcher/PowerLauncher/ViewModel/ResultsViewModel.cs b/src/modules/launcher/PowerLauncher/ViewModel/ResultsViewModel.cs
index 578e5cda84..568ae44638 100644
--- a/src/modules/launcher/PowerLauncher/ViewModel/ResultsViewModel.cs
+++ b/src/modules/launcher/PowerLauncher/ViewModel/ResultsViewModel.cs
@@ -222,7 +222,7 @@ namespace PowerLauncher.ViewModel
///
/// Add new results to ResultCollection
///
- public void AddResults(List newRawResults, string resultId, CancellationToken ct)
+ public void AddResults(List newRawResults, CancellationToken ct)
{
if (newRawResults == null)
{
@@ -236,7 +236,6 @@ namespace PowerLauncher.ViewModel
ct.ThrowIfCancellationRequested();
}
- Results.RemoveAll(r => r.Result.PluginID == resultId);
Results.AddRange(newResults);
}
#endregion