From ba4aa7a6131b1e381b3c3a48cd3c3ffd772d5f84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Wed, 1 Jul 2020 16:56:31 +0200 Subject: [PATCH] fixes #101432 --- src/vs/workbench/contrib/scm/browser/scmViewPane.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/contrib/scm/browser/scmViewPane.ts b/src/vs/workbench/contrib/scm/browser/scmViewPane.ts index df056df3921..0925d7059e9 100644 --- a/src/vs/workbench/contrib/scm/browser/scmViewPane.ts +++ b/src/vs/workbench/contrib/scm/browser/scmViewPane.ts @@ -79,6 +79,8 @@ import { Command } from 'vs/editor/common/modes'; import { renderCodicons } from 'vs/base/common/codicons'; import { ToolBar } from 'vs/base/browser/ui/toolbar/toolbar'; import { AnchorAlignment } from 'vs/base/browser/ui/contextview/contextview'; +import { domEvent } from 'vs/base/browser/event'; +import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; type TreeElement = ISCMRepository | ISCMInput | ISCMResourceGroup | IResourceNode | ISCMResource; @@ -272,6 +274,7 @@ class InputRenderer implements ICompressibleTreeRenderer void, + private focusTree: () => void, @IInstantiationService private instantiationService: IInstantiationService, ) { } @@ -279,10 +282,16 @@ class InputRenderer implements ICompressibleTreeRenderer new StandardKeyboardEvent(e)); + const onEscape = Event.filter(onKeyDown, e => e.keyCode === KeyCode.Escape); + disposables.add(onEscape(this.focusTree)); - return { inputWidget, disposable: Disposable.None, templateDisposable: inputWidget }; + return { inputWidget, disposable: Disposable.None, templateDisposable: disposables }; } renderElement(node: ITreeNode, index: number, templateData: InputTemplate): void { @@ -1541,7 +1550,7 @@ export class SCMViewPane extends ViewPane { this._register(repositories.onDidSplice(() => this.updateActions())); - this.inputRenderer = this.instantiationService.createInstance(InputRenderer, this.layoutCache, (input, height) => this.tree.updateElementHeight(input, height)); + this.inputRenderer = this.instantiationService.createInstance(InputRenderer, this.layoutCache, (input, height) => this.tree.updateElementHeight(input, height), () => this.tree.domFocus()); const delegate = new ProviderListDelegate(this.inputRenderer); const actionViewItemProvider = (action: IAction) => this.getActionViewItem(action); -- GitLab