From 675deb4ebb320676bfd9ebf1d65df4ec331fa105 Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Wed, 30 Sep 2020 15:06:59 -0700 Subject: [PATCH] ActionBar should not intercept escape unless needed Fix #107665 --- src/vs/base/browser/ui/actionbar/actionbar.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/vs/base/browser/ui/actionbar/actionbar.ts b/src/vs/base/browser/ui/actionbar/actionbar.ts index 0aaeeec0e42..07d3893ff83 100644 --- a/src/vs/base/browser/ui/actionbar/actionbar.ts +++ b/src/vs/base/browser/ui/actionbar/actionbar.ts @@ -64,8 +64,9 @@ export class ActionBar extends Disposable implements IActionRunner { private _onDidBlur = this._register(new Emitter()); readonly onDidBlur = this._onDidBlur.event; - private _onDidCancel = this._register(new Emitter()); + private _onDidCancel = this._register(new Emitter({ onFirstListenerAdd: () => this.cancelHasListener = true })); readonly onDidCancel = this._onDidCancel.event; + private cancelHasListener = false; private _onDidRun = this._register(new Emitter()); readonly onDidRun = this._onDidRun.event; @@ -138,7 +139,7 @@ export class ActionBar extends Disposable implements IActionRunner { eventHandled = this.focusPrevious(); } else if (nextKeys && (event.equals(nextKeys[0]) || event.equals(nextKeys[1]))) { eventHandled = this.focusNext(); - } else if (event.equals(KeyCode.Escape)) { + } else if (event.equals(KeyCode.Escape) && this.cancelHasListener) { this._onDidCancel.fire(); } else if (this.isTriggerKeyEvent(event)) { // Staying out of the else branch even if not triggered