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