Skip to content

Commit f477595

Browse files
jcreedcmuaeisenberg
authored andcommitted
Fix #597.
1 parent 7c48c5f commit f477595

3 files changed

Lines changed: 21 additions & 8 deletions

File tree

extensions/ql-vscode/src/extension.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ import { spawnIdeServer } from './ide-server';
4343
import { InterfaceManager } from './interface';
4444
import { WebviewReveal } from './interface-utils';
4545
import { ideServerLogger, logger, queryServerLogger } from './logging';
46-
import { QueryHistoryManager } from './query-history';
46+
import { QueryHistoryManager, updateTreeItemContextValue } from './query-history';
4747
import { CompletedQuery } from './query-results';
4848
import * as qsClient from './queryserver-client';
4949
import { displayQuickQuery } from './quick-query';
@@ -406,6 +406,10 @@ async function activateWithInstalledDistribution(
406406
);
407407
const item = qhm.addQuery(info);
408408
await showResultsForCompletedQuery(item, WebviewReveal.NotForced);
409+
// The call to showResults potentially creates SARIF file;
410+
// Update the tree item context value to allow viewing that
411+
// SARIF file from context menu.
412+
await updateTreeItemContextValue(item);
409413
} catch (e) {
410414
if (e instanceof UserCancellationException) {
411415
if (e.silent) {

extensions/ql-vscode/src/query-history.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,15 @@ const SHOW_QUERY_TEXT_QUICK_EVAL_MSG = `\
5050
*/
5151
const FAILED_QUERY_HISTORY_ITEM_ICON = 'media/red-x.svg';
5252

53+
export async function updateTreeItemContextValue(element: CompletedQuery): Promise<void> {
54+
// Mark this query history item according to whether it has a
55+
// SARIF file so that we can make context menu items conditionally
56+
// available.
57+
element.treeItem!.contextValue = (await element.query.hasInterpretedResults())
58+
? 'interpretedResultsItem'
59+
: 'rawResultsItem';
60+
}
61+
5362
/**
5463
* Tree data provider for the query history view.
5564
*/
@@ -77,6 +86,9 @@ class HistoryTreeDataProvider
7786
constructor(private ctx: ExtensionContext) { }
7887

7988
async getTreeItem(element: CompletedQuery): Promise<vscode.TreeItem> {
89+
if (element.treeItem !== undefined)
90+
return element.treeItem;
91+
8092
const it = new vscode.TreeItem(element.toString());
8193

8294
it.command = {
@@ -85,12 +97,8 @@ class HistoryTreeDataProvider
8597
arguments: [element],
8698
};
8799

88-
// Mark this query history item according to whether it has a
89-
// SARIF file so that we can make context menu items conditionally
90-
// available.
91-
it.contextValue = (await element.query.hasInterpretedResults())
92-
? 'interpretedResultsItem'
93-
: 'rawResultsItem';
100+
element.treeItem = it;
101+
updateTreeItemContextValue(element);
94102

95103
if (!element.didRunSuccessfully) {
96104
it.iconPath = path.join(

extensions/ql-vscode/src/query-results.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { env } from 'vscode';
1+
import { env, TreeItem } from 'vscode';
22

33
import { QueryWithResults, tmpDir, QueryInfo } from './run-queries';
44
import * as messages from './messages';
@@ -17,6 +17,7 @@ export class CompletedQuery implements QueryWithResults {
1717
readonly database: DatabaseInfo;
1818
readonly logFileLocation?: string;
1919
options: QueryHistoryItemOptions;
20+
treeItem?: TreeItem;
2021
dispose: () => void;
2122

2223
/**

0 commit comments

Comments
 (0)