From c54f991e6016084cbda9952a7e5433d85e2dde23 Mon Sep 17 00:00:00 2001 From: Charles Gagnon Date: Fri, 14 May 2021 16:31:15 -0700 Subject: [PATCH] Fix actionbar trigger key handling (#15488) * Fix actionbar trigger key handling * fix compile error --- src/sql/base/browser/ui/taskbar/actionbar.ts | 10 ++++++++-- .../browser/calloutDialog/linkCalloutDialog.ts | 17 +++-------------- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/sql/base/browser/ui/taskbar/actionbar.ts b/src/sql/base/browser/ui/taskbar/actionbar.ts index c314d459c5..e1b14f30ec 100644 --- a/src/sql/base/browser/ui/taskbar/actionbar.ts +++ b/src/sql/base/browser/ui/taskbar/actionbar.ts @@ -37,6 +37,9 @@ export class ActionBar extends ActionRunner implements IActionRunner { protected _focusedItem?: number; protected _focusTracker: DOM.IFocusTracker; + // Trigger Key Tracking + private _triggerKeyDown: boolean = false; + // Elements protected _domNode: HTMLElement; protected _actionsList: HTMLElement; @@ -81,7 +84,7 @@ export class ActionBar extends ActionRunner implements IActionRunner { } else if (event.equals(KeyCode.Escape)) { this.cancel(); } else if (event.equals(KeyCode.Enter) || event.equals(KeyCode.Space)) { - // Nothing, just staying out of the else branch + this._triggerKeyDown = true; } else { eventHandled = false; } @@ -103,7 +106,10 @@ export class ActionBar extends ActionRunner implements IActionRunner { // Run action on Enter/Space if (event.equals(KeyCode.Enter) || event.equals(KeyCode.Space)) { - this.doTrigger(event); + if (this._triggerKeyDown) { + this.doTrigger(event); + this._triggerKeyDown = false; + } event.preventDefault(); event.stopPropagation(); } diff --git a/src/sql/workbench/contrib/notebook/browser/calloutDialog/linkCalloutDialog.ts b/src/sql/workbench/contrib/notebook/browser/calloutDialog/linkCalloutDialog.ts index cd6ed399d0..13e4913236 100644 --- a/src/sql/workbench/contrib/notebook/browser/calloutDialog/linkCalloutDialog.ts +++ b/src/sql/workbench/contrib/notebook/browser/calloutDialog/linkCalloutDialog.ts @@ -22,7 +22,6 @@ import { InputBox } from 'sql/base/browser/ui/inputBox/inputBox'; import { attachCalloutDialogStyler } from 'sql/workbench/common/styler'; import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { escapeLabel, escapeUrl } from 'sql/workbench/contrib/notebook/browser/calloutDialog/common/utils'; -import { KeyCode } from 'vs/base/common/keyCodes'; export interface ILinkCalloutDialogOptions { insertTitle?: string, @@ -101,13 +100,6 @@ export class LinkCalloutDialog extends Modal { } protected renderBody(container: HTMLElement) { - this._register(DOM.addDisposableListener(document, DOM.EventType.KEY_UP, (e: KeyboardEvent) => { - let event = new StandardKeyboardEvent(e); - if (event.equals(KeyCode.Enter)) { - DOM.EventHelper.stop(e, true); - this.hide('ok'); - } - })); let linkContentColumn = DOM.$('.column.insert-link'); DOM.append(container, linkContentColumn); @@ -155,8 +147,7 @@ export class LinkCalloutDialog extends Modal { protected onAccept(e?: StandardKeyboardEvent) { // EventHelper.stop() will call preventDefault. Without it, text cell will insert an extra newline when pressing enter on dialog DOM.EventHelper.stop(e, true); - const keyboardEventExists = !!e; - this.insert(keyboardEventExists); + this.insert(); } protected onClose(e?: StandardKeyboardEvent) { @@ -164,10 +155,8 @@ export class LinkCalloutDialog extends Modal { this.cancel(); } - public insert(willHideByKeyboardEvent = false): void { - if (!willHideByKeyboardEvent) { - this.hide('ok'); - } + public insert(): void { + this.hide('ok'); let escapedLabel = escapeLabel(this._linkTextInputBox.value); let escapedUrl = escapeUrl(this._linkUrlInputBox.value);