From 2ce94ec26a00be22c2fa2fe8863794eded31a3c4 Mon Sep 17 00:00:00 2001 From: Alex Ross Date: Mon, 22 Apr 2024 16:13:22 +0200 Subject: [PATCH] Fix treeview multiselect right-click issue (#210910) * Treeview with multiselect mishandles right-click outside the selection Fixes #208849 * No need to clear context * Do reset context if target is outside selection --- src/vs/workbench/browser/parts/views/treeView.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/browser/parts/views/treeView.ts b/src/vs/workbench/browser/parts/views/treeView.ts index bfc0c8b42a7..9ac5d9dbad2 100644 --- a/src/vs/workbench/browser/parts/views/treeView.ts +++ b/src/vs/workbench/browser/parts/views/treeView.ts @@ -800,8 +800,10 @@ abstract class AbstractTreeView extends Disposable implements ITreeView { event.stopPropagation(); this.tree!.setFocus([node]); - const selected = this.canSelectMany ? this.getSelection() : []; - selected.unshift(node); + let selected = this.canSelectMany ? this.getSelection() : []; + if (selected.length === 0) { + selected = [node]; + } const actions = treeMenus.getResourceContextActions(selected); if (!actions.length) { return; @@ -1565,8 +1567,8 @@ class MultipleSelectionActionRunner extends ActionRunner { }); } - if (!actionInSelected) { - selectionHandleArgs = undefined; + if (!actionInSelected && selectionHandleArgs && selectionHandleArgs.length > 0) { + context = selectionHandleArgs[0]; } await action.run(context, selectionHandleArgs);