@@ -64,28 +64,38 @@ private record RunningProcessInfo(string ProcessName, string MainWindowTitle);
64
64
65
65
private List < Result > CreateResultsFromQuery ( Query query )
66
66
{
67
- string termToSearch = query . Search ;
68
- var processList = processHelper . GetMatchingProcesses ( termToSearch ) ;
69
- var processWithNonEmptyMainWindowTitleList = ProcessHelper . GetProcessesWithNonEmptyWindowTitle ( ) ;
67
+ var searchTerm = query . Search ;
68
+ var processWindowTitle = ProcessHelper . GetProcessesWithNonEmptyWindowTitle ( ) ;
69
+ var processList = processHelper . GetMatchingProcesses ( searchTerm , processWindowTitle ) ;
70
70
71
71
if ( ! processList . Any ( ) )
72
72
{
73
73
return null ;
74
74
}
75
75
76
76
var results = new List < Result > ( ) ;
77
-
78
77
foreach ( var pr in processList )
79
78
{
80
79
var p = pr . Process ;
81
80
var path = processHelper . TryGetProcessFilename ( p ) ;
81
+ var title = p . ProcessName + " - " + p . Id ;
82
+ var score = pr . Score ;
83
+ if ( processWindowTitle . TryGetValue ( p . Id , out var mainWindowTitle ) )
84
+ {
85
+ title = mainWindowTitle ;
86
+ if ( string . IsNullOrWhiteSpace ( searchTerm ) )
87
+ {
88
+ // Add score to prioritize processes with visible windows
89
+ score += 200 ;
90
+ }
91
+ }
82
92
results . Add ( new Result ( )
83
93
{
84
94
IcoPath = path ,
85
- Title = processWithNonEmptyMainWindowTitleList . TryGetValue ( p . Id , out var mainWindowTitle ) ? mainWindowTitle : p . ProcessName + " - " + p . Id ,
95
+ Title = title ,
86
96
SubTitle = path ,
87
- TitleHighlightData = StringMatcher . FuzzySearch ( termToSearch , p . ProcessName ) . MatchData ,
88
- Score = pr . Score ,
97
+ TitleHighlightData = StringMatcher . FuzzySearch ( searchTerm , p . ProcessName ) . MatchData ,
98
+ Score = score ,
89
99
ContextData = new RunningProcessInfo ( p . ProcessName , mainWindowTitle ) ,
90
100
AutoCompleteText = $ "{ _context . CurrentPluginMetadata . ActionKeyword } { Plugin . Query . TermSeparator } { p . ProcessName } ",
91
101
Action = ( c ) =>
@@ -98,14 +108,13 @@ private List<Result> CreateResultsFromQuery(Query query)
98
108
}
99
109
100
110
var sortedResults = results
101
- . OrderBy ( x => string . IsNullOrEmpty ( ( ( RunningProcessInfo ) x . ContextData ) . MainWindowTitle ) )
102
- . ThenBy ( x => x . Title )
111
+ . OrderBy ( x => x . Title )
103
112
. ToList ( ) ;
104
113
105
114
// When there are multiple results AND all of them are instances of the same executable
106
115
// add a quick option to kill them all at the top of the results.
107
116
var firstResult = sortedResults . FirstOrDefault ( x => ! string . IsNullOrEmpty ( x . SubTitle ) ) ;
108
- if ( processList . Count > 1 && ! string . IsNullOrEmpty ( termToSearch ) && sortedResults . All ( r => r . SubTitle == firstResult ? . SubTitle ) )
117
+ if ( processList . Count > 1 && ! string . IsNullOrEmpty ( searchTerm ) && sortedResults . All ( r => r . SubTitle == firstResult ? . SubTitle ) )
109
118
{
110
119
sortedResults . Insert ( 1 , new Result ( )
111
120
{
0 commit comments