@@ -34,6 +34,8 @@ public partial class MainViewModel : BaseModel, ISavable
34
34
35
35
private bool _isQueryRunning ;
36
36
private Query _lastQuery ;
37
+ private Result lastContextMenuResult = new Result ( ) ;
38
+ private List < Result > lastContextMenuResults = new List < Result > ( ) ;
37
39
private string _queryTextBeforeLeaveResults ;
38
40
39
41
private readonly FlowLauncherJsonStorage < History > _historyItemsStorage ;
@@ -650,9 +652,34 @@ private void QueryContextMenu()
650
652
651
653
if ( selected != null ) // SelectedItem returns null if selection is empty.
652
654
{
653
- var results = PluginManager . GetContextMenusForPlugin ( selected ) ;
654
- results . Add ( ContextMenuTopMost ( selected ) ) ;
655
- results . Add ( ContextMenuPluginInfo ( selected . PluginID ) ) ;
655
+ List < Result > results ;
656
+ if ( selected == lastContextMenuResult )
657
+ {
658
+ // Use copy to keep the original results unchanged
659
+ results = lastContextMenuResults . ConvertAll ( result => new Result
660
+ {
661
+ Title = result . Title ,
662
+ SubTitle = result . SubTitle ,
663
+ IcoPath = result . IcoPath ,
664
+ PluginDirectory = result . PluginDirectory ,
665
+ Action = result . Action ,
666
+ ContextData = result . ContextData ,
667
+ Glyph = result . Glyph ,
668
+ OriginQuery = result . OriginQuery ,
669
+ Score = result . Score ,
670
+ AsyncAction = result . AsyncAction ,
671
+ } ) ;
672
+ }
673
+ else
674
+ {
675
+ results = PluginManager . GetContextMenusForPlugin ( selected ) ;
676
+ lastContextMenuResults = results ;
677
+ lastContextMenuResult = selected ;
678
+ results . Add ( ContextMenuTopMost ( selected ) ) ;
679
+ results . Add ( ContextMenuPluginInfo ( selected . PluginID ) ) ;
680
+ }
681
+
682
+
656
683
657
684
if ( ! string . IsNullOrEmpty ( query ) )
658
685
{
@@ -1025,6 +1052,8 @@ public async void Hide()
1025
1052
{
1026
1053
// Trick for no delay
1027
1054
MainWindowOpacity = 0 ;
1055
+ lastContextMenuResult = new Result ( ) ;
1056
+ lastContextMenuResults = new List < Result > ( ) ;
1028
1057
1029
1058
if ( ! SelectedIsFromQueryResults ( ) )
1030
1059
{
0 commit comments