mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Fix actionbar trigger key handling (#15488)
* Fix actionbar trigger key handling * fix compile error
This commit is contained in:
@@ -37,6 +37,9 @@ export class ActionBar extends ActionRunner implements IActionRunner {
|
|||||||
protected _focusedItem?: number;
|
protected _focusedItem?: number;
|
||||||
protected _focusTracker: DOM.IFocusTracker;
|
protected _focusTracker: DOM.IFocusTracker;
|
||||||
|
|
||||||
|
// Trigger Key Tracking
|
||||||
|
private _triggerKeyDown: boolean = false;
|
||||||
|
|
||||||
// Elements
|
// Elements
|
||||||
protected _domNode: HTMLElement;
|
protected _domNode: HTMLElement;
|
||||||
protected _actionsList: HTMLElement;
|
protected _actionsList: HTMLElement;
|
||||||
@@ -81,7 +84,7 @@ export class ActionBar extends ActionRunner implements IActionRunner {
|
|||||||
} else if (event.equals(KeyCode.Escape)) {
|
} else if (event.equals(KeyCode.Escape)) {
|
||||||
this.cancel();
|
this.cancel();
|
||||||
} else if (event.equals(KeyCode.Enter) || event.equals(KeyCode.Space)) {
|
} else if (event.equals(KeyCode.Enter) || event.equals(KeyCode.Space)) {
|
||||||
// Nothing, just staying out of the else branch
|
this._triggerKeyDown = true;
|
||||||
} else {
|
} else {
|
||||||
eventHandled = false;
|
eventHandled = false;
|
||||||
}
|
}
|
||||||
@@ -103,7 +106,10 @@ export class ActionBar extends ActionRunner implements IActionRunner {
|
|||||||
|
|
||||||
// Run action on Enter/Space
|
// Run action on Enter/Space
|
||||||
if (event.equals(KeyCode.Enter) || event.equals(KeyCode.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.preventDefault();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ import { InputBox } from 'sql/base/browser/ui/inputBox/inputBox';
|
|||||||
import { attachCalloutDialogStyler } from 'sql/workbench/common/styler';
|
import { attachCalloutDialogStyler } from 'sql/workbench/common/styler';
|
||||||
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
|
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
|
||||||
import { escapeLabel, escapeUrl } from 'sql/workbench/contrib/notebook/browser/calloutDialog/common/utils';
|
import { escapeLabel, escapeUrl } from 'sql/workbench/contrib/notebook/browser/calloutDialog/common/utils';
|
||||||
import { KeyCode } from 'vs/base/common/keyCodes';
|
|
||||||
|
|
||||||
export interface ILinkCalloutDialogOptions {
|
export interface ILinkCalloutDialogOptions {
|
||||||
insertTitle?: string,
|
insertTitle?: string,
|
||||||
@@ -101,13 +100,6 @@ export class LinkCalloutDialog extends Modal {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected renderBody(container: HTMLElement) {
|
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');
|
let linkContentColumn = DOM.$('.column.insert-link');
|
||||||
DOM.append(container, linkContentColumn);
|
DOM.append(container, linkContentColumn);
|
||||||
|
|
||||||
@@ -155,8 +147,7 @@ export class LinkCalloutDialog extends Modal {
|
|||||||
protected onAccept(e?: StandardKeyboardEvent) {
|
protected onAccept(e?: StandardKeyboardEvent) {
|
||||||
// EventHelper.stop() will call preventDefault. Without it, text cell will insert an extra newline when pressing enter on dialog
|
// EventHelper.stop() will call preventDefault. Without it, text cell will insert an extra newline when pressing enter on dialog
|
||||||
DOM.EventHelper.stop(e, true);
|
DOM.EventHelper.stop(e, true);
|
||||||
const keyboardEventExists = !!e;
|
this.insert();
|
||||||
this.insert(keyboardEventExists);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected onClose(e?: StandardKeyboardEvent) {
|
protected onClose(e?: StandardKeyboardEvent) {
|
||||||
@@ -164,10 +155,8 @@ export class LinkCalloutDialog extends Modal {
|
|||||||
this.cancel();
|
this.cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
public insert(willHideByKeyboardEvent = false): void {
|
public insert(): void {
|
||||||
if (!willHideByKeyboardEvent) {
|
this.hide('ok');
|
||||||
this.hide('ok');
|
|
||||||
}
|
|
||||||
let escapedLabel = escapeLabel(this._linkTextInputBox.value);
|
let escapedLabel = escapeLabel(this._linkTextInputBox.value);
|
||||||
let escapedUrl = escapeUrl(this._linkUrlInputBox.value);
|
let escapedUrl = escapeUrl(this._linkUrlInputBox.value);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user