diff --git a/src/vs/base/browser/dom.ts b/src/vs/base/browser/dom.ts index 4e5530e52eef48d990cbff8207db0033dc208570..08b3ed2b6351c9412f0843b8d808950ac98ac521 100644 --- a/src/vs/base/browser/dom.ts +++ b/src/vs/base/browser/dom.ts @@ -225,7 +225,8 @@ class DomListener implements IDisposable { this._handler = null!; } } - +export function addDisposableListener(node: Element | Window | Document, type: K, handler: (event: GlobalEventHandlersEventMap[K]) => void, useCapture?: boolean): IDisposable; +export function addDisposableListener(node: Element | Window | Document, type: string, handler: (event: any) => void, useCapture?: boolean): IDisposable; export function addDisposableListener(node: Element | Window | Document, type: string, handler: (event: any) => void, useCapture?: boolean): IDisposable { return new DomListener(node, type, handler, useCapture); } @@ -833,48 +834,48 @@ export function isHTMLElement(o: any): o is HTMLElement { export const EventType = { // Mouse - CLICK: 'click', - DBLCLICK: 'dblclick', - MOUSE_UP: 'mouseup', - MOUSE_DOWN: 'mousedown', - MOUSE_OVER: 'mouseover', - MOUSE_MOVE: 'mousemove', - MOUSE_OUT: 'mouseout', - MOUSE_ENTER: 'mouseenter', - MOUSE_LEAVE: 'mouseleave', - CONTEXT_MENU: 'contextmenu', - WHEEL: 'wheel', + CLICK: 'click' as 'click', + DBLCLICK: 'dblclick' as 'dblclick', + MOUSE_UP: 'mouseup' as 'mouseup', + MOUSE_DOWN: 'mousedown' as 'mousedown', + MOUSE_OVER: 'mouseover' as 'mouseover', + MOUSE_MOVE: 'mousemove' as 'mousemove', + MOUSE_OUT: 'mouseout' as 'mouseout', + MOUSE_ENTER: 'mouseenter' as 'mouseenter', + MOUSE_LEAVE: 'mouseleave' as 'mouseleave', + CONTEXT_MENU: 'contextmenu' as 'contextmenu', + WHEEL: 'wheel' as 'wheel', // Keyboard - KEY_DOWN: 'keydown', - KEY_PRESS: 'keypress', - KEY_UP: 'keyup', + KEY_DOWN: 'keydown' as 'keydown', + KEY_PRESS: 'keypress' as 'keypress', + KEY_UP: 'keyup' as 'keyup', // HTML Document - LOAD: 'load', - UNLOAD: 'unload', - ABORT: 'abort', - ERROR: 'error', - RESIZE: 'resize', - SCROLL: 'scroll', + LOAD: 'load' as 'load', + UNLOAD: 'unload' as 'unload', + ABORT: 'abort' as 'abort', + ERROR: 'error' as 'error', + RESIZE: 'resize' as 'resize', + SCROLL: 'scroll' as 'scroll', // Form - SELECT: 'select', - CHANGE: 'change', - SUBMIT: 'submit', - RESET: 'reset', - FOCUS: 'focus', - FOCUS_IN: 'focusin', - FOCUS_OUT: 'focusout', - BLUR: 'blur', - INPUT: 'input', + SELECT: 'select' as 'select', + CHANGE: 'change' as 'change', + SUBMIT: 'submit' as 'submit', + RESET: 'reset' as 'reset', + FOCUS: 'focus' as 'focus', + FOCUS_IN: 'focusin' as 'focusin', + FOCUS_OUT: 'focusout' as 'focusout', + BLUR: 'blur' as 'blur', + INPUT: 'input' as 'input', // Local Storage - STORAGE: 'storage', + STORAGE: 'storage' as 'storage', // Drag - DRAG_START: 'dragstart', - DRAG: 'drag', - DRAG_ENTER: 'dragenter', - DRAG_LEAVE: 'dragleave', - DRAG_OVER: 'dragover', - DROP: 'drop', - DRAG_END: 'dragend', + DRAG_START: 'dragstart' as 'dragstart', + DRAG: 'drag' as 'drag', + DRAG_ENTER: 'dragenter' as 'dragenter', + DRAG_LEAVE: 'dragleave' as 'dragleave', + DRAG_OVER: 'dragover' as 'dragover', + DROP: 'drop' as 'drop', + DRAG_END: 'dragend' as 'dragend', // Animation ANIMATION_START: browser.isWebKit ? 'webkitAnimationStart' : 'animationstart', ANIMATION_END: browser.isWebKit ? 'webkitAnimationEnd' : 'animationend', diff --git a/src/vs/base/browser/touch.ts b/src/vs/base/browser/touch.ts index 812220c75c24c370dfb8e0f36495b16581a054b5..77f94de61f87761c03c319f9261b2f719fc02d77 100644 --- a/src/vs/base/browser/touch.ts +++ b/src/vs/base/browser/touch.ts @@ -81,9 +81,9 @@ export class Gesture extends Disposable { this.activeTouches = {}; this.handle = null; this.targets = []; - this._register(DomUtils.addDisposableListener(document, 'touchstart', (e) => this.onTouchStart(e))); - this._register(DomUtils.addDisposableListener(document, 'touchend', (e) => this.onTouchEnd(e))); - this._register(DomUtils.addDisposableListener(document, 'touchmove', (e) => this.onTouchMove(e))); + this._register(DomUtils.addDisposableListener(document, 'touchstart', (e: TouchEvent) => this.onTouchStart(e))); + this._register(DomUtils.addDisposableListener(document, 'touchend', (e: TouchEvent) => this.onTouchEnd(e))); + this._register(DomUtils.addDisposableListener(document, 'touchmove', (e: TouchEvent) => this.onTouchMove(e))); } public static addTarget(element: HTMLElement): void { diff --git a/src/vs/base/browser/ui/actionbar/actionbar.ts b/src/vs/base/browser/ui/actionbar/actionbar.ts index e8b648a34ac43e71af05f4ffda4facff1b3a55a6..f9538a497edd1dfaf148389a38707f291d09a310 100644 --- a/src/vs/base/browser/ui/actionbar/actionbar.ts +++ b/src/vs/base/browser/ui/actionbar/actionbar.ts @@ -118,8 +118,7 @@ export class BaseActionItem extends Disposable implements IActionItem { DOM.EventHelper.stop(e, true); // do not run when dragging is on because that would disable it } - const mouseEvent = e as MouseEvent; - if (this._action.enabled && mouseEvent.button === 0) { + if (this._action.enabled && e.button === 0) { DOM.addClass(this.element, 'active'); } })); @@ -467,7 +466,7 @@ export class ActionBar extends Disposable implements IActionRunner { } this._register(DOM.addDisposableListener(this.domNode, DOM.EventType.KEY_DOWN, e => { - let event = new StandardKeyboardEvent(e as KeyboardEvent); + let event = new StandardKeyboardEvent(e); let eventHandled = true; if (event.equals(previousKey)) { @@ -492,7 +491,7 @@ export class ActionBar extends Disposable implements IActionRunner { })); this._register(DOM.addDisposableListener(this.domNode, DOM.EventType.KEY_UP, e => { - let event = new StandardKeyboardEvent(e as KeyboardEvent); + let event = new StandardKeyboardEvent(e); // Run action on Enter/Space if (this.isTriggerKeyEvent(event)) { diff --git a/src/vs/base/browser/ui/button/button.ts b/src/vs/base/browser/ui/button/button.ts index 0a508f08d32dabf52f4707f8c0d5830c59b9e242..9b7145f053c44623ab907ea4f77b7c2ea9dbdf9e 100644 --- a/src/vs/base/browser/ui/button/button.ts +++ b/src/vs/base/browser/ui/button/button.ts @@ -75,7 +75,7 @@ export class Button extends Disposable { })); this._register(DOM.addDisposableListener(this._element, DOM.EventType.KEY_DOWN, e => { - const event = new StandardKeyboardEvent(e as KeyboardEvent); + const event = new StandardKeyboardEvent(e); let eventHandled = false; if (this.enabled && event.equals(KeyCode.Enter) || event.equals(KeyCode.Space)) { this._onDidClick.fire(e); @@ -199,7 +199,7 @@ export class ButtonGroup extends Disposable { // Implement keyboard access in buttons if there are multiple if (count > 1) { this._register(DOM.addDisposableListener(button.element, DOM.EventType.KEY_DOWN, e => { - const event = new StandardKeyboardEvent(e as KeyboardEvent); + const event = new StandardKeyboardEvent(e); let eventHandled = true; // Next / Previous Button diff --git a/src/vs/base/browser/ui/dropdown/dropdown.ts b/src/vs/base/browser/ui/dropdown/dropdown.ts index 49f01b74c578be9689558a664d5ab3d49d64fe46..0138010ccd81d98092037aa7739b3ce5ca3636f7 100644 --- a/src/vs/base/browser/ui/dropdown/dropdown.ts +++ b/src/vs/base/browser/ui/dropdown/dropdown.ts @@ -66,7 +66,7 @@ export class BaseDropdown extends ActionRunner { }); this._register(addDisposableListener(this._label, EventType.KEY_UP, e => { - const event = new StandardKeyboardEvent(e as KeyboardEvent); + const event = new StandardKeyboardEvent(e); if (event.equals(KeyCode.Enter) || event.equals(KeyCode.Space)) { EventHelper.stop(e, true); // https://github.com/Microsoft/vscode/issues/57997 diff --git a/src/vs/base/browser/ui/menu/menu.ts b/src/vs/base/browser/ui/menu/menu.ts index bc037e06e14ce0914b6b2bac424a4937d0d18d94..5abc7332d4a3e0d7537fc5a369fa148fe53b6ca9 100644 --- a/src/vs/base/browser/ui/menu/menu.ts +++ b/src/vs/base/browser/ui/menu/menu.ts @@ -116,7 +116,7 @@ export class Menu extends ActionBar { } this._register(addDisposableListener(this.domNode, EventType.MOUSE_OUT, e => { - let relatedTarget = (e as MouseEvent).relatedTarget as HTMLElement; + let relatedTarget = e.relatedTarget as HTMLElement; if (!isAncestor(relatedTarget, this.domNode)) { this.focusedItem = undefined; this.updateFocus(); @@ -532,7 +532,7 @@ class SubmenuActionItem extends MenuActionItem { this.submenuIndicator.setAttribute('aria-hidden', 'true'); this._register(addDisposableListener(this.element, EventType.KEY_UP, e => { - let event = new StandardKeyboardEvent(e as KeyboardEvent); + let event = new StandardKeyboardEvent(e); if (event.equals(KeyCode.RightArrow) || event.equals(KeyCode.Enter)) { EventHelper.stop(e, true); @@ -541,7 +541,7 @@ class SubmenuActionItem extends MenuActionItem { })); this._register(addDisposableListener(this.element, EventType.KEY_DOWN, e => { - let event = new StandardKeyboardEvent(e as KeyboardEvent); + let event = new StandardKeyboardEvent(e); if (event.equals(KeyCode.RightArrow) || event.equals(KeyCode.Enter)) { EventHelper.stop(e, true); } @@ -599,7 +599,7 @@ class SubmenuActionItem extends MenuActionItem { this.submenuContainer.style.top = `${this.element.offsetTop - this.parentData.parent.scrollOffset}px`; this.submenuDisposables.push(addDisposableListener(this.submenuContainer, EventType.KEY_UP, e => { - let event = new StandardKeyboardEvent(e as KeyboardEvent); + let event = new StandardKeyboardEvent(e); if (event.equals(KeyCode.LeftArrow)) { EventHelper.stop(e, true); @@ -613,7 +613,7 @@ class SubmenuActionItem extends MenuActionItem { })); this.submenuDisposables.push(addDisposableListener(this.submenuContainer, EventType.KEY_DOWN, e => { - let event = new StandardKeyboardEvent(e as KeyboardEvent); + let event = new StandardKeyboardEvent(e); if (event.equals(KeyCode.LeftArrow)) { EventHelper.stop(e, true); } diff --git a/src/vs/base/browser/ui/sash/sash.ts b/src/vs/base/browser/ui/sash/sash.ts index ca7b602142afc959ff2ad398d032d7b214878691..8c7168bad53a2e4cb41b7d6a24f50cb5f3ae1cea 100644 --- a/src/vs/base/browser/ui/sash/sash.ts +++ b/src/vs/base/browser/ui/sash/sash.ts @@ -264,7 +264,7 @@ export class Sash extends Disposable { const onMouseMove = (e: MouseEvent) => { EventHelper.stop(e, false); - const mouseMoveEvent = new StandardMouseEvent(e as MouseEvent); + const mouseMoveEvent = new StandardMouseEvent(e); const event: ISashEvent = { startX, currentX: mouseMoveEvent.posx, startY, currentY: mouseMoveEvent.posy, altKey }; this._onDidChange.fire(event); diff --git a/src/vs/base/parts/quickopen/browser/quickOpenWidget.ts b/src/vs/base/parts/quickopen/browser/quickOpenWidget.ts index c761e286019f81da11f6f78ca5995e1ec3d5617c..2e6255c31b573f6f52ea4170c098d4d6e939fa6d 100644 --- a/src/vs/base/parts/quickopen/browser/quickOpenWidget.ts +++ b/src/vs/base/parts/quickopen/browser/quickOpenWidget.ts @@ -155,13 +155,13 @@ export class QuickOpenWidget extends Disposable implements IModelProvider { this._register(DOM.addDisposableListener(this.element, DOM.EventType.FOCUS, e => this.gainingFocus(), true)); this._register(DOM.addDisposableListener(this.element, DOM.EventType.BLUR, e => this.loosingFocus(e), true)); this._register(DOM.addDisposableListener(this.element, DOM.EventType.KEY_DOWN, e => { - const keyboardEvent: StandardKeyboardEvent = new StandardKeyboardEvent(e as KeyboardEvent); + const keyboardEvent: StandardKeyboardEvent = new StandardKeyboardEvent(e); if (keyboardEvent.keyCode === KeyCode.Escape) { DOM.EventHelper.stop(e, true); this.hide(HideReason.CANCELED); } else if (keyboardEvent.keyCode === KeyCode.Tab && !keyboardEvent.altKey && !keyboardEvent.ctrlKey && !keyboardEvent.metaKey) { - const stops = e.currentTarget.querySelectorAll('input, .monaco-tree, .monaco-tree-row.focused .action-label.icon'); + const stops = (e.currentTarget as HTMLElement).querySelectorAll('input, .monaco-tree, .monaco-tree-row.focused .action-label.icon') as NodeListOf; if (keyboardEvent.shiftKey && keyboardEvent.target === stops[0]) { DOM.EventHelper.stop(e, true); stops[stops.length - 1].focus(); @@ -285,7 +285,7 @@ export class QuickOpenWidget extends Disposable implements IModelProvider { })); this._register(DOM.addDisposableListener(this.treeContainer, DOM.EventType.KEY_DOWN, e => { - const keyboardEvent: StandardKeyboardEvent = new StandardKeyboardEvent(e as KeyboardEvent); + const keyboardEvent: StandardKeyboardEvent = new StandardKeyboardEvent(e); // Only handle when in quick navigation mode if (!this.quickNavigateConfiguration) { @@ -301,7 +301,7 @@ export class QuickOpenWidget extends Disposable implements IModelProvider { })); this._register(DOM.addDisposableListener(this.treeContainer, DOM.EventType.KEY_UP, e => { - const keyboardEvent: StandardKeyboardEvent = new StandardKeyboardEvent(e as KeyboardEvent); + const keyboardEvent: StandardKeyboardEvent = new StandardKeyboardEvent(e); const keyCode = keyboardEvent.keyCode; // Only handle when in quick navigation mode diff --git a/src/vs/workbench/browser/parts/quickinput/quickInput.ts b/src/vs/workbench/browser/parts/quickinput/quickInput.ts index 99b4fe1d5e767af40b172e95edfb7737504b2abe..078f43258e3acd74a83cec0c13e858cba2dc43ed 100644 --- a/src/vs/workbench/browser/parts/quickinput/quickInput.ts +++ b/src/vs/workbench/browser/parts/quickinput/quickInput.ts @@ -528,12 +528,12 @@ class QuickPick extends QuickInput implements IQuickPi } private registerQuickNavigation() { - return dom.addDisposableListener(this.ui.container, dom.EventType.KEY_UP, (e: KeyboardEvent) => { + return dom.addDisposableListener(this.ui.container, dom.EventType.KEY_UP, e => { if (this.canSelectMany || !this.quickNavigate) { return; } - const keyboardEvent: StandardKeyboardEvent = new StandardKeyboardEvent(e as KeyboardEvent); + const keyboardEvent: StandardKeyboardEvent = new StandardKeyboardEvent(e); const keyCode = keyboardEvent.keyCode; // Select element when keys are pressed that signal it diff --git a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts index fde2c5cc883c5810fa4313fc49c68d8be68f9777..8363e7a905723af03451aa5cb760bbf6077c573a 100644 --- a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts +++ b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts @@ -769,7 +769,7 @@ export class MenubarControl extends Disposable { if (firstTimeSetup) { this._register(DOM.addDisposableListener(this.customMenus[menuIndex].buttonElement, DOM.EventType.KEY_UP, (e) => { - let event = new StandardKeyboardEvent(e as KeyboardEvent); + let event = new StandardKeyboardEvent(e); let eventHandled = true; if ((event.equals(KeyCode.DownArrow) || event.equals(KeyCode.Enter)) && !this.isOpen) { @@ -838,7 +838,7 @@ export class MenubarControl extends Disposable { if (firstTimeSetup) { this._register(DOM.addDisposableListener(this.container, DOM.EventType.KEY_DOWN, (e) => { - let event = new StandardKeyboardEvent(e as KeyboardEvent); + let event = new StandardKeyboardEvent(e); let eventHandled = true; const key = !!e.key ? KeyCodeUtils.fromString(e.key) : KeyCode.Unknown; diff --git a/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.ts b/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.ts index 6c37bb1098f790a0a6571c0fcd83c8c7bd2d272f..6e563394db256b647ea7cd0a22822ff6d128ce85 100644 --- a/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.ts +++ b/src/vs/workbench/parts/markers/electron-browser/markersPanelActions.ts @@ -189,7 +189,7 @@ export class MarkersFilterActionItem extends BaseActionItem { this.filterInputBox.value = this.action.filterText; } })); - this._register(DOM.addStandardDisposableListener(this.filterInputBox.inputElement, DOM.EventType.KEY_DOWN, e => this.onInputKeyDown(e, this.filterInputBox))); + this._register(DOM.addStandardDisposableListener(this.filterInputBox.inputElement, DOM.EventType.KEY_DOWN, (e: any) => this.onInputKeyDown(e, this.filterInputBox))); this._register(DOM.addStandardDisposableListener(container, DOM.EventType.KEY_DOWN, this.handleKeyboardEvent)); this._register(DOM.addStandardDisposableListener(container, DOM.EventType.KEY_UP, this.handleKeyboardEvent)); diff --git a/src/vs/workbench/parts/search/browser/searchView.ts b/src/vs/workbench/parts/search/browser/searchView.ts index a76305ed5b193abefebe942b7a42d2abb54295f2..d5476e956a5d8b46dbdf077227715b79ca3bc943 100644 --- a/src/vs/workbench/parts/search/browser/searchView.ts +++ b/src/vs/workbench/parts/search/browser/searchView.ts @@ -1355,8 +1355,8 @@ export class SearchView extends Viewlet implements IViewlet, IPanel { private addClickEvents = (element: HTMLElement, handler: (event: any) => void): void => { this.messageDisposables.push(dom.addDisposableListener(element, dom.EventType.CLICK, handler)); - this.messageDisposables.push(dom.addDisposableListener(element, dom.EventType.KEY_DOWN, (e: KeyboardEvent) => { - let event = new StandardKeyboardEvent(e as KeyboardEvent); + this.messageDisposables.push(dom.addDisposableListener(element, dom.EventType.KEY_DOWN, e => { + let event = new StandardKeyboardEvent(e); let eventHandled = true; if (event.equals(KeyCode.Space) || event.equals(KeyCode.Enter)) {