From ae8f2dd61a66515071a417b7fa095bd4a33151c0 Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Sun, 14 Jul 2024 08:50:37 -0700 Subject: [PATCH] Remove Events.ts in favor of new Event.forward --- addons/addon-canvas/src/BaseRenderLayer.ts | 5 ++--- addons/addon-canvas/src/CanvasAddon.ts | 7 +++---- addons/addon-canvas/src/CanvasRenderer.ts | 5 ++--- addons/addon-webgl/src/WebglAddon.ts | 11 +++++------ addons/addon-webgl/src/WebglRenderer.ts | 7 +++---- src/browser/CoreBrowserTerminal.ts | 11 +++++------ src/browser/services/CoreBrowserService.ts | 5 ++--- src/common/CoreTerminal.ts | 13 ++++++------- src/common/Events.ts | 11 ----------- src/headless/Terminal.ts | 11 +++++------ 10 files changed, 33 insertions(+), 53 deletions(-) delete mode 100644 src/common/Events.ts diff --git a/addons/addon-canvas/src/BaseRenderLayer.ts b/addons/addon-canvas/src/BaseRenderLayer.ts index d1e0f1d1..05a877ab 100644 --- a/addons/addon-canvas/src/BaseRenderLayer.ts +++ b/addons/addon-canvas/src/BaseRenderLayer.ts @@ -12,7 +12,6 @@ import { allowRescaling, throwIfFalsy } from 'browser/renderer/shared/RendererUt import { createSelectionRenderModel } from 'browser/renderer/shared/SelectionRenderModel'; import { IRasterizedGlyph, IRenderDimensions, ISelectionRenderModel, ITextureAtlas } from 'browser/renderer/shared/Types'; import { ICoreBrowserService, IThemeService } from 'browser/services/Services'; -import { forwardEvent } from 'common/Events'; import { Disposable, MutableDisposable, toDisposable } from 'common/Lifecycle'; import { isSafari } from 'common/Platform'; import { ICellData } from 'common/Types'; @@ -21,7 +20,7 @@ import { WHITESPACE_CELL_CODE } from 'common/buffer/Constants'; import { IBufferService, IDecorationService, IOptionsService } from 'common/services/Services'; import { Terminal } from '@xterm/xterm'; import { IRenderLayer } from './Types'; -import { Emitter } from 'vs/base/common/event'; +import { Emitter, Event } from 'vs/base/common/event'; export abstract class BaseRenderLayer extends Disposable implements IRenderLayer { private _canvas: HTMLCanvasElement; @@ -123,7 +122,7 @@ export abstract class BaseRenderLayer extends Disposable implements IRenderLayer return; } this._charAtlas = acquireTextureAtlas(this._terminal, this._optionsService.rawOptions, colorSet, this._deviceCellWidth, this._deviceCellHeight, this._deviceCharWidth, this._deviceCharHeight, this._coreBrowserService.dpr); - this._charAtlasDisposable.value = forwardEvent(this._charAtlas.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas); + this._charAtlasDisposable.value = Event.forward(this._charAtlas.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas); this._charAtlas.warmUp(); for (let i = 0; i < this._charAtlas.pages.length; i++) { this._bitmapGenerator[i] = new BitmapGenerator(this._charAtlas.pages[i].canvas); diff --git a/addons/addon-canvas/src/CanvasAddon.ts b/addons/addon-canvas/src/CanvasAddon.ts index 5e70ba45..1d2cc9f7 100644 --- a/addons/addon-canvas/src/CanvasAddon.ts +++ b/addons/addon-canvas/src/CanvasAddon.ts @@ -7,12 +7,11 @@ import type { ITerminalAddon, Terminal } from '@xterm/xterm'; import type { CanvasAddon as ICanvasApi } from '@xterm/addon-canvas'; import { ICharacterJoinerService, ICharSizeService, ICoreBrowserService, IRenderService, IThemeService } from 'browser/services/Services'; import { ITerminal } from 'browser/Types'; -import { forwardEvent } from 'common/Events'; import { Disposable, toDisposable } from 'common/Lifecycle'; import { setTraceLogger } from 'common/services/LogService'; import { IBufferService, IDecorationService, ILogService } from 'common/services/Services'; import { CanvasRenderer } from './CanvasRenderer'; -import { Emitter } from '../../../src/vs/base/common/event'; +import { Emitter, Event } from '../../../src/vs/base/common/event'; export class CanvasAddon extends Disposable implements ITerminalAddon , ICanvasApi { private _terminal?: Terminal; @@ -55,8 +54,8 @@ export class CanvasAddon extends Disposable implements ITerminalAddon , ICanvasA setTraceLogger(logService); this._renderer = new CanvasRenderer(terminal, screenElement, linkifier, bufferService, charSizeService, optionsService, characterJoinerService, coreService, coreBrowserService, decorationService, themeService); - this.register(forwardEvent(this._renderer.onChangeTextureAtlas, this._onChangeTextureAtlas)); - this.register(forwardEvent(this._renderer.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas)); + this.register(Event.forward(this._renderer.onChangeTextureAtlas, this._onChangeTextureAtlas)); + this.register(Event.forward(this._renderer.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas)); renderService.setRenderer(this._renderer); renderService.handleResize(bufferService.cols, bufferService.rows); diff --git a/addons/addon-canvas/src/CanvasRenderer.ts b/addons/addon-canvas/src/CanvasRenderer.ts index ae808eb3..7d08c7b1 100644 --- a/addons/addon-canvas/src/CanvasRenderer.ts +++ b/addons/addon-canvas/src/CanvasRenderer.ts @@ -9,7 +9,6 @@ import { observeDevicePixelDimensions } from 'browser/renderer/shared/DevicePixe import { createRenderDimensions } from 'browser/renderer/shared/RendererUtils'; import { IRenderDimensions, IRenderer, IRequestRedrawEvent } from 'browser/renderer/shared/Types'; import { ICharSizeService, ICharacterJoinerService, ICoreBrowserService, IThemeService } from 'browser/services/Services'; -import { forwardEvent } from 'common/Events'; import { Disposable, MutableDisposable, toDisposable } from 'common/Lifecycle'; import { IBufferService, ICoreService, IDecorationService, IOptionsService } from 'common/services/Services'; import { Terminal } from '@xterm/xterm'; @@ -18,7 +17,7 @@ import { LinkRenderLayer } from './LinkRenderLayer'; import { SelectionRenderLayer } from './SelectionRenderLayer'; import { TextRenderLayer } from './TextRenderLayer'; import { IRenderLayer } from './Types'; -import { Emitter } from 'vs/base/common/event'; +import { Emitter, Event } from 'vs/base/common/event'; export class CanvasRenderer extends Disposable implements IRenderer { private _renderLayers: IRenderLayer[]; @@ -56,7 +55,7 @@ export class CanvasRenderer extends Disposable implements IRenderer { new CursorRenderLayer(this._terminal, this._screenElement, 3, this._onRequestRedraw, this._bufferService, this._optionsService, coreService, this._coreBrowserService, decorationService, _themeService) ]; for (const layer of this._renderLayers) { - forwardEvent(layer.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas); + Event.forward(layer.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas); } this.dimensions = createRenderDimensions(); this._devicePixelRatio = this._coreBrowserService.dpr; diff --git a/addons/addon-webgl/src/WebglAddon.ts b/addons/addon-webgl/src/WebglAddon.ts index b827a935..ba9616ac 100644 --- a/addons/addon-webgl/src/WebglAddon.ts +++ b/addons/addon-webgl/src/WebglAddon.ts @@ -7,14 +7,13 @@ import type { ITerminalAddon, Terminal } from '@xterm/xterm'; import type { WebglAddon as IWebglApi } from '@xterm/addon-webgl'; import { ICharacterJoinerService, ICharSizeService, ICoreBrowserService, IRenderService, IThemeService } from 'browser/services/Services'; import { ITerminal } from 'browser/Types'; -import { forwardEvent } from 'common/Events'; import { Disposable, toDisposable } from 'common/Lifecycle'; import { getSafariVersion, isSafari } from 'common/Platform'; import { ICoreService, IDecorationService, ILogService, IOptionsService } from 'common/services/Services'; import { IWebGL2RenderingContext } from './Types'; import { WebglRenderer } from './WebglRenderer'; import { setTraceLogger } from 'common/services/LogService'; -import { Emitter } from '../../../src/vs/base/common/event'; +import { Emitter, Event } from '../../../src/vs/base/common/event'; export class WebglAddon extends Disposable implements ITerminalAddon , IWebglApi { private _terminal?: Terminal; @@ -82,10 +81,10 @@ export class WebglAddon extends Disposable implements ITerminalAddon , IWebglApi themeService, this._preserveDrawingBuffer )); - this.register(forwardEvent(this._renderer.onContextLoss, this._onContextLoss)); - this.register(forwardEvent(this._renderer.onChangeTextureAtlas, this._onChangeTextureAtlas)); - this.register(forwardEvent(this._renderer.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas)); - this.register(forwardEvent(this._renderer.onRemoveTextureAtlasCanvas, this._onRemoveTextureAtlasCanvas)); + this.register(Event.forward(this._renderer.onContextLoss, this._onContextLoss)); + this.register(Event.forward(this._renderer.onChangeTextureAtlas, this._onChangeTextureAtlas)); + this.register(Event.forward(this._renderer.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas)); + this.register(Event.forward(this._renderer.onRemoveTextureAtlasCanvas, this._onRemoveTextureAtlasCanvas)); renderService.setRenderer(this._renderer); this.register(toDisposable(() => { diff --git a/addons/addon-webgl/src/WebglRenderer.ts b/addons/addon-webgl/src/WebglRenderer.ts index ded4bebc..1072a2f0 100644 --- a/addons/addon-webgl/src/WebglRenderer.ts +++ b/addons/addon-webgl/src/WebglRenderer.ts @@ -12,7 +12,6 @@ import { observeDevicePixelDimensions } from 'browser/renderer/shared/DevicePixe import { createRenderDimensions } from 'browser/renderer/shared/RendererUtils'; import { IRenderDimensions, IRenderer, IRequestRedrawEvent, ITextureAtlas } from 'browser/renderer/shared/Types'; import { ICharSizeService, ICharacterJoinerService, ICoreBrowserService, IThemeService } from 'browser/services/Services'; -import { forwardEvent } from 'common/Events'; import { Disposable, MutableDisposable, getDisposeArrayDisposable, toDisposable } from 'common/Lifecycle'; import { CharData, IBufferLine, ICellData } from 'common/Types'; import { AttributeData } from 'common/buffer/AttributeData'; @@ -26,7 +25,7 @@ import { COMBINED_CHAR_BIT_MASK, RENDER_MODEL_BG_OFFSET, RENDER_MODEL_EXT_OFFSET import { IWebGL2RenderingContext } from './Types'; import { LinkRenderLayer } from './renderLayer/LinkRenderLayer'; import { IRenderLayer } from './renderLayer/Types'; -import { Emitter } from '../../../src/vs/base/common/event'; +import { Emitter, Event } from '../../../src/vs/base/common/event'; export class WebglRenderer extends Disposable implements IRenderer { private _renderLayers: IRenderLayer[]; @@ -278,8 +277,8 @@ export class WebglRenderer extends Disposable implements IRenderer { if (this._charAtlas !== atlas) { this._onChangeTextureAtlas.fire(atlas.pages[0].canvas); this._charAtlasDisposable.value = getDisposeArrayDisposable([ - forwardEvent(atlas.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas), - forwardEvent(atlas.onRemoveTextureAtlasCanvas, this._onRemoveTextureAtlasCanvas) + Event.forward(atlas.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas), + Event.forward(atlas.onRemoveTextureAtlasCanvas, this._onRemoveTextureAtlasCanvas) ]); } this._charAtlas = atlas; diff --git a/src/browser/CoreBrowserTerminal.ts b/src/browser/CoreBrowserTerminal.ts index 5e93ac35..ac6bd3b4 100644 --- a/src/browser/CoreBrowserTerminal.ts +++ b/src/browser/CoreBrowserTerminal.ts @@ -44,7 +44,6 @@ import { ICharSizeService, ICharacterJoinerService, ICoreBrowserService, ILinkPr import { ThemeService } from 'browser/services/ThemeService'; import { channels, color } from 'common/Color'; import { CoreTerminal } from 'common/CoreTerminal'; -import { forwardEvent } from 'common/Events'; import { MutableDisposable, toDisposable } from 'common/Lifecycle'; import * as Browser from 'common/Platform'; import { ColorRequestType, CoreMouseAction, CoreMouseButton, CoreMouseEventType, IColorEvent, ITerminalOptions, KeyboardResultType, SpecialColorIndex } from 'common/Types'; @@ -58,7 +57,7 @@ import { IDecorationService } from 'common/services/Services'; import { WindowsOptionsReportType } from '../common/InputHandler'; import { AccessibilityManager } from './AccessibilityManager'; import { Linkifier } from './Linkifier'; -import { Emitter, type Event } from 'vs/base/common/event'; +import { Emitter, Event } from 'vs/base/common/event'; export class CoreBrowserTerminal extends CoreTerminal implements ITerminal { public textarea: HTMLTextAreaElement | undefined; @@ -166,10 +165,10 @@ export class CoreBrowserTerminal extends CoreTerminal implements ITerminal { this.register(this._inputHandler.onRequestReset(() => this.reset())); this.register(this._inputHandler.onRequestWindowsOptionsReport(type => this._reportWindowsOptions(type))); this.register(this._inputHandler.onColor((event) => this._handleColorEvent(event))); - this.register(forwardEvent(this._inputHandler.onCursorMove, this._onCursorMove)); - this.register(forwardEvent(this._inputHandler.onTitleChange, this._onTitleChange)); - this.register(forwardEvent(this._inputHandler.onA11yChar, this._onA11yCharEmitter)); - this.register(forwardEvent(this._inputHandler.onA11yTab, this._onA11yTabEmitter)); + this.register(Event.forward(this._inputHandler.onCursorMove, this._onCursorMove)); + this.register(Event.forward(this._inputHandler.onTitleChange, this._onTitleChange)); + this.register(Event.forward(this._inputHandler.onA11yChar, this._onA11yCharEmitter)); + this.register(Event.forward(this._inputHandler.onA11yTab, this._onA11yTabEmitter)); // Setup listeners this.register(this._bufferService.onResize(e => this._afterResize(e.cols, e.rows))); diff --git a/src/browser/services/CoreBrowserService.ts b/src/browser/services/CoreBrowserService.ts index c6bb095e..268afb77 100644 --- a/src/browser/services/CoreBrowserService.ts +++ b/src/browser/services/CoreBrowserService.ts @@ -5,9 +5,8 @@ import { Disposable, MutableDisposable, toDisposable } from 'common/Lifecycle'; import { ICoreBrowserService } from './Services'; -import { forwardEvent } from 'common/Events'; import { addDisposableDomListener } from 'browser/Lifecycle'; -import { Emitter } from 'vs/base/common/event'; +import { Emitter, Event } from 'vs/base/common/event'; export class CoreBrowserService extends Disposable implements ICoreBrowserService { public serviceBrand: undefined; @@ -30,7 +29,7 @@ export class CoreBrowserService extends Disposable implements ICoreBrowserServic // Monitor device pixel ratio this.register(this.onWindowChange(w => this._screenDprMonitor.setWindow(w))); - this.register(forwardEvent(this._screenDprMonitor.onDprChange, this._onDprChange)); + this.register(Event.forward(this._screenDprMonitor.onDprChange, this._onDprChange)); this.register( addDisposableDomListener(this._textarea, 'focus', () => (this._isFocused = true)) diff --git a/src/common/CoreTerminal.ts b/src/common/CoreTerminal.ts index ada77ac0..a93eb934 100644 --- a/src/common/CoreTerminal.ts +++ b/src/common/CoreTerminal.ts @@ -29,7 +29,6 @@ import { BufferService, MINIMUM_COLS, MINIMUM_ROWS } from 'common/services/Buffe import { OptionsService } from 'common/services/OptionsService'; import { IDisposable, IAttributeData, ICoreTerminal, IScrollEvent } from 'common/Types'; import { CoreService } from 'common/services/CoreService'; -import { forwardEvent } from 'common/Events'; import { CoreMouseService } from 'common/services/CoreMouseService'; import { UnicodeService } from 'common/services/UnicodeService'; import { CharsetService } from 'common/services/CharsetService'; @@ -39,7 +38,7 @@ import { IBufferSet } from 'common/buffer/Types'; import { InputHandler } from 'common/InputHandler'; import { WriteBuffer } from 'common/input/WriteBuffer'; import { OscLinkService } from 'common/services/OscLinkService'; -import { Emitter, type Event } from 'vs/base/common/event'; +import { Emitter, Event } from 'vs/base/common/event'; // Only trigger this warning a single time per session let hasWriteSyncWarnHappened = false; @@ -124,13 +123,13 @@ export abstract class CoreTerminal extends Disposable implements ICoreTerminal { // Register input handler and handle/forward events this._inputHandler = this.register(new InputHandler(this._bufferService, this._charsetService, this.coreService, this._logService, this.optionsService, this._oscLinkService, this.coreMouseService, this.unicodeService)); - this.register(forwardEvent(this._inputHandler.onLineFeed, this._onLineFeed)); + this.register(Event.forward(this._inputHandler.onLineFeed, this._onLineFeed)); this.register(this._inputHandler); // Setup listeners - this.register(forwardEvent(this._bufferService.onResize, this._onResize)); - this.register(forwardEvent(this.coreService.onData, this._onData)); - this.register(forwardEvent(this.coreService.onBinary, this._onBinary)); + this.register(Event.forward(this._bufferService.onResize, this._onResize)); + this.register(Event.forward(this.coreService.onData, this._onData)); + this.register(Event.forward(this.coreService.onBinary, this._onBinary)); this.register(this.coreService.onRequestScrollToBottom(() => this.scrollToBottom(true))); this.register(this.coreService.onUserInput(() => this._writeBuffer.handleUserInput())); this.register(this.optionsService.onMultipleOptionChange(['windowsMode', 'windowsPty'], () => this._handleWindowsPtyOptionChange())); @@ -140,7 +139,7 @@ export abstract class CoreTerminal extends Disposable implements ICoreTerminal { })); // Setup WriteBuffer this._writeBuffer = this.register(new WriteBuffer((data, promiseResult) => this._inputHandler.parse(data, promiseResult))); - this.register(forwardEvent(this._writeBuffer.onWriteParsed, this._onWriteParsed)); + this.register(Event.forward(this._writeBuffer.onWriteParsed, this._onWriteParsed)); } public write(data: string | Uint8Array, callback?: () => void): void { diff --git a/src/common/Events.ts b/src/common/Events.ts deleted file mode 100644 index 8505bf28..00000000 --- a/src/common/Events.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Copyright (c) 2019 The xterm.js authors. All rights reserved. - * @license MIT - */ - -import { IDisposable } from 'common/Types'; -import type { Emitter, Event } from 'vs/base/common/event'; - -export function forwardEvent(from: Event, to: Emitter): IDisposable { - return from(e => to.fire(e)); -} diff --git a/src/headless/Terminal.ts b/src/headless/Terminal.ts index 721a4603..ac996737 100644 --- a/src/headless/Terminal.ts +++ b/src/headless/Terminal.ts @@ -24,9 +24,8 @@ import { DEFAULT_ATTR_DATA } from 'common/buffer/BufferLine'; import { IBuffer } from 'common/buffer/Types'; import { CoreTerminal } from 'common/CoreTerminal'; -import { forwardEvent } from 'common/Events'; import { IMarker, ITerminalOptions } from 'common/Types'; -import { Emitter } from 'vs/base/common/event'; +import { Emitter, Event } from 'vs/base/common/event'; export class Terminal extends CoreTerminal { private readonly _onBell = this.register(new Emitter()); @@ -50,10 +49,10 @@ export class Terminal extends CoreTerminal { // Setup InputHandler listeners this.register(this._inputHandler.onRequestBell(() => this.bell())); this.register(this._inputHandler.onRequestReset(() => this.reset())); - this.register(forwardEvent(this._inputHandler.onCursorMove, this._onCursorMove)); - this.register(forwardEvent(this._inputHandler.onTitleChange, this._onTitleChange)); - this.register(forwardEvent(this._inputHandler.onA11yChar, this._onA11yCharEmitter)); - this.register(forwardEvent(this._inputHandler.onA11yTab, this._onA11yTabEmitter)); + this.register(Event.forward(this._inputHandler.onCursorMove, this._onCursorMove)); + this.register(Event.forward(this._inputHandler.onTitleChange, this._onTitleChange)); + this.register(Event.forward(this._inputHandler.onA11yChar, this._onA11yCharEmitter)); + this.register(Event.forward(this._inputHandler.onA11yTab, this._onA11yTabEmitter)); } /**