diff --git a/package.json b/package.json index acd9c0ab..313f0bb0 100644 --- a/package.json +++ b/package.json @@ -239,12 +239,12 @@ "view/item/context": [ { "command": "vscode-cmsis-debugger.liveWatch.modify", - "when": "view == cmsis-debugger.liveWatch && viewItem == expression", + "when": "view == cmsis-debugger.liveWatch", "group": "inline@1" }, { "command": "vscode-cmsis-debugger.liveWatch.delete", - "when": "view == cmsis-debugger.liveWatch && viewItem == expression", + "when": "view == cmsis-debugger.liveWatch && viewItem == parentExpression", "group": "inline@2" }, { @@ -254,17 +254,17 @@ }, { "command": "vscode-cmsis-debugger.liveWatch.modify", - "when": "view == cmsis-debugger.liveWatch && viewItem == expression", + "when": "view == cmsis-debugger.liveWatch", "group": "contextMenuG1@2" }, { "command": "vscode-cmsis-debugger.liveWatch.copy", - "when": "view == cmsis-debugger.liveWatch && viewItem == expression", + "when": "view == cmsis-debugger.liveWatch", "group": "contextMenuG1@3" }, { "command": "vscode-cmsis-debugger.liveWatch.delete", - "when": "view == cmsis-debugger.liveWatch && viewItem == expression", + "when": "view == cmsis-debugger.liveWatch && viewItem == parentExpression", "group": "contextMenuG1@4" }, { @@ -279,7 +279,7 @@ }, { "command": "vscode-cmsis-debugger.liveWatch.showInMemoryInspector", - "when": "view == cmsis-debugger.liveWatch && viewItem == expression", + "when": "view == cmsis-debugger.liveWatch && viewItem == parentExpression", "group": "contextMenuG3@1" } ] diff --git a/src/views/live-watch/live-watch.test.ts b/src/views/live-watch/live-watch.test.ts index a1203051..8a8b453e 100644 --- a/src/views/live-watch/live-watch.test.ts +++ b/src/views/live-watch/live-watch.test.ts @@ -154,12 +154,22 @@ describe('LiveWatchTreeDataProvider', () => { expect(parent.children.length).toBe(0); }); - it('getTreeItem returns correct TreeItem', () => { - const node = makeNode('expression', { result: 'value', variablesReference: 1 }, 1); + it('returns correct TreeItem for parent nodes', () => { + const node = makeNode('expression', { result: 'value', variablesReference: 0 }, 1); const item = liveWatchTreeDataProvider.getTreeItem(node); expect(item.label).toBe('expression = '); expect(item.description).toBe('value'); - expect(item.contextValue).toBe('expression'); + expect(item.contextValue).toBe('parentExpression'); + }); + + it('returns correct TreeItem for leaf nodes', () => { + // Create a child node within a parent node + const parent = makeNode('parentExpression', { result: 'parentValue', variablesReference: 1 }, 1); + const child = makeNode('childExpression', { result: 'childValue', variablesReference: 0 }, 2, parent); + const item = liveWatchTreeDataProvider.getTreeItem(child); + expect(item.label).toBe('childExpression = '); + expect(item.description).toBe('childValue'); + expect(item.contextValue).toBe('childExpression'); }); }); diff --git a/src/views/live-watch/live-watch.ts b/src/views/live-watch/live-watch.ts index b242c177..c75faa10 100644 --- a/src/views/live-watch/live-watch.ts +++ b/src/views/live-watch/live-watch.ts @@ -86,6 +86,7 @@ export class LiveWatchTreeDataProvider implements vscode.TreeDataProvider