diff --git a/src/vs/base/parts/tree/browser/treeDefaults.ts b/src/vs/base/parts/tree/browser/treeDefaults.ts index 1858b0dcaa87b8d7c94ca2e9ea357557cabcfb38..b5c4ca60e62dac0c53f77abddcdf975aa07d33b5 100644 --- a/src/vs/base/parts/tree/browser/treeDefaults.ts +++ b/src/vs/base/parts/tree/browser/treeDefaults.ts @@ -168,8 +168,8 @@ export class DefaultController implements _.IController { } protected onLeftClick(tree: _.ITree, element: any, eventish: ICancelableEvent, origin: string = 'mouse'): boolean { - const payload = { origin: origin, originalEvent: eventish }; const event = eventish; + const payload = { origin: origin, originalEvent: eventish, didClickOnTwistie: this.isClickOnTwistie(event) }; if (tree.getInput() === element) { tree.clearFocus(payload); diff --git a/src/vs/workbench/browser/parts/views/customView.ts b/src/vs/workbench/browser/parts/views/customView.ts index 2ada24f3e32aaace4aad9c5836d8ba7d1a04253f..5a63ac0a0445dcff1d01a3770bf10d06d85d6daa 100644 --- a/src/vs/workbench/browser/parts/views/customView.ts +++ b/src/vs/workbench/browser/parts/views/customView.ts @@ -34,6 +34,7 @@ import { LIGHT, FileThemeIcon, FolderThemeIcon } from 'vs/platform/theme/common/ import { FileKind } from 'vs/platform/files/common/files'; import { WorkbenchTreeController } from 'vs/platform/list/browser/listService'; import { ViewletPanel, IViewletPanelOptions } from 'vs/workbench/browser/parts/views/panelViewlet'; +import { IMouseEvent } from 'vs/base/browser/mouseEvent'; export class CustomTreeViewPanel extends ViewletPanel { @@ -373,7 +374,7 @@ export class CustomTreeViewer extends Disposable implements ITreeViewer { } private onSelection({ payload }: any): void { - if (payload && payload.source === 'api') { + if (payload && (!!payload.didClickOnTwistie || payload.source === 'api')) { return; } const selection: ITreeItem = this.tree.getSelection()[0]; @@ -586,6 +587,10 @@ class TreeController extends WorkbenchTreeController { super({}, configurationService); } + protected shouldToggleExpansion(element: ITreeItem, event: IMouseEvent, origin: string): boolean { + return element.command ? this.isClickOnTwistie(event) : super.shouldToggleExpansion(element, event, origin); + } + public onContextMenu(tree: ITree, node: ITreeItem, event: ContextMenuEvent): boolean { event.preventDefault(); event.stopPropagation();