From 60113fa155f5302ac7c6c9b2e662a6e3eb54269f Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Tue, 2 Apr 2019 11:38:55 -0700 Subject: [PATCH] Replace EventEmitter usage in CharMeasure --- src/Terminal.ts | 2 +- src/Types.ts | 3 +++ src/ui/CharMeasure.ts | 10 ++++++---- src/ui/TestUtils.test.ts | 1 + 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/Terminal.ts b/src/Terminal.ts index 1f05ec2e4..991ede25c 100644 --- a/src/Terminal.ts +++ b/src/Terminal.ts @@ -748,7 +748,7 @@ export class Terminal extends EventEmitter implements ITerminal, IDisposable, II // dprchange should handle this case, we need this as well for browsers that don't support the // matchMedia query. this.register(addDisposableDomListener(window, 'resize', () => this.renderer.onWindowResize(window.devicePixelRatio))); - this.register(this.charMeasure.addDisposableListener('charsizechanged', () => this.renderer.onCharSizeChanged())); + this.register(this.charMeasure.onCharSizeChanged(() => this.renderer.onCharSizeChanged())); this.register(this.renderer.addDisposableListener('resize', (dimensions) => this.viewport.syncScrollArea())); this.selectionManager = new SelectionManager(this, this.charMeasure); diff --git a/src/Types.ts b/src/Types.ts index a4da0d543..38947af5c 100644 --- a/src/Types.ts +++ b/src/Types.ts @@ -253,6 +253,9 @@ export interface IMouseHelper { export interface ICharMeasure { width: number; height: number; + + onCharSizeChanged: IEvent; + measure(options: ITerminalOptions): void; } diff --git a/src/ui/CharMeasure.ts b/src/ui/CharMeasure.ts index 0ac755eab..c24e82a0d 100644 --- a/src/ui/CharMeasure.ts +++ b/src/ui/CharMeasure.ts @@ -4,22 +4,24 @@ */ import { ICharMeasure, ITerminalOptions } from '../Types'; -import { EventEmitter } from '../common/EventEmitter'; +import { EventEmitter2, IEvent } from '../../lib/common/EventEmitter2'; /** * Utility class that measures the size of a character. Measurements are done in * the DOM rather than with a canvas context because support for extracting the * height of characters is patchy across browsers. */ -export class CharMeasure extends EventEmitter implements ICharMeasure { +export class CharMeasure implements ICharMeasure { private _document: Document; private _parentElement: HTMLElement; private _measureElement: HTMLElement; private _width: number; private _height: number; + private _onCharSizeChanged = new EventEmitter2(); + public get onCharSizeChanged(): IEvent { return this._onCharSizeChanged.event; } + constructor(document: Document, parentElement: HTMLElement) { - super(); this._document = document; this._parentElement = parentElement; this._measureElement = this._document.createElement('span'); @@ -50,7 +52,7 @@ export class CharMeasure extends EventEmitter implements ICharMeasure { if (this._width !== geometry.width || this._height !== adjustedHeight) { this._width = geometry.width; this._height = adjustedHeight; - this.emit('charsizechanged'); + this._onCharSizeChanged.fire(); } } } diff --git a/src/ui/TestUtils.test.ts b/src/ui/TestUtils.test.ts index 2e23fe703..0e71f1a31 100644 --- a/src/ui/TestUtils.test.ts +++ b/src/ui/TestUtils.test.ts @@ -174,6 +174,7 @@ export class MockTerminal implements ITerminal { } export class MockCharMeasure implements ICharMeasure { + onCharSizeChanged: IEvent; width: number; height: number; measure(options: ITerminalOptions): void {