mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
Merge pull request #2506 from Flow-Launcher/fix-slow-context-menu-search
Speed up context menu search
This commit is contained in:
commit
097bc69320
1 changed files with 32 additions and 3 deletions
|
|
@ -34,6 +34,8 @@ namespace Flow.Launcher.ViewModel
|
|||
|
||||
private bool _isQueryRunning;
|
||||
private Query _lastQuery;
|
||||
private Result lastContextMenuResult = new Result();
|
||||
private List<Result> lastContextMenuResults = new List<Result>();
|
||||
private string _queryTextBeforeLeaveResults;
|
||||
|
||||
private readonly FlowLauncherJsonStorage<History> _historyItemsStorage;
|
||||
|
|
@ -650,9 +652,34 @@ namespace Flow.Launcher.ViewModel
|
|||
|
||||
if (selected != null) // SelectedItem returns null if selection is empty.
|
||||
{
|
||||
var results = PluginManager.GetContextMenusForPlugin(selected);
|
||||
results.Add(ContextMenuTopMost(selected));
|
||||
results.Add(ContextMenuPluginInfo(selected.PluginID));
|
||||
List<Result> results;
|
||||
if (selected == lastContextMenuResult)
|
||||
{
|
||||
// Use copy to keep the original results unchanged
|
||||
results = lastContextMenuResults.ConvertAll(result => new Result
|
||||
{
|
||||
Title = result.Title,
|
||||
SubTitle = result.SubTitle,
|
||||
IcoPath = result.IcoPath,
|
||||
PluginDirectory = result.PluginDirectory,
|
||||
Action = result.Action,
|
||||
ContextData = result.ContextData,
|
||||
Glyph = result.Glyph,
|
||||
OriginQuery = result.OriginQuery,
|
||||
Score = result.Score,
|
||||
AsyncAction = result.AsyncAction,
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
results = PluginManager.GetContextMenusForPlugin(selected);
|
||||
lastContextMenuResults = results;
|
||||
lastContextMenuResult = selected;
|
||||
results.Add(ContextMenuTopMost(selected));
|
||||
results.Add(ContextMenuPluginInfo(selected.PluginID));
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (!string.IsNullOrEmpty(query))
|
||||
{
|
||||
|
|
@ -1025,6 +1052,8 @@ namespace Flow.Launcher.ViewModel
|
|||
{
|
||||
// Trick for no delay
|
||||
MainWindowOpacity = 0;
|
||||
lastContextMenuResult = new Result();
|
||||
lastContextMenuResults = new List<Result>();
|
||||
|
||||
if (!SelectedIsFromQueryResults())
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue