diff --git a/src/TestUtils.test.ts b/src/TestUtils.test.ts index 490a1707..06da0ac1 100644 --- a/src/TestUtils.test.ts +++ b/src/TestUtils.test.ts @@ -432,7 +432,7 @@ export class MockCompositionHelper implements ICompositionHelper { export class MockCharSizeService implements ICharSizeService { get hasValidSize(): boolean { return this.width > 0 && this.height > 0; } - onCharSizeChange: IEvent; + onCharSizeChange: IEvent; constructor(public width: number, public height: number) {} measure(): void {} } diff --git a/src/ui/services/CharSizeService.ts b/src/ui/services/CharSizeService.ts index 7d9d3a2c..4a297fe7 100644 --- a/src/ui/services/CharSizeService.ts +++ b/src/ui/services/CharSizeService.ts @@ -14,8 +14,8 @@ export class CharSizeService implements ICharSizeService { public get hasValidSize(): boolean { return this.width > 0 && this.height > 0; } - private _onCharSizeChange = new EventEmitter2(); - public get onCharSizeChange(): IEvent { return this._onCharSizeChange.event; } + private _onCharSizeChange = new EventEmitter2(); + public get onCharSizeChange(): IEvent { return this._onCharSizeChange.event; } constructor( document: Document, @@ -27,8 +27,11 @@ export class CharSizeService implements ICharSizeService { public measure(): void { const result = this._measureStrategy.measure(); - this.width = result.width; - this.height = result.height; + if (result.width !== this.width || result.height !== this.height) { + this.width = result.width; + this.height = result.height; + this._onCharSizeChange.fire(); + } } } @@ -69,7 +72,7 @@ class DomMeasureStrategy implements IMeasureStrategy { // Note that this triggers a synchronous layout const geometry = this._measureElement.getBoundingClientRect(); - +console.log('measure', geometry); // If values are 0 then the element is likely currently display:none, in which case we should // retain the previous value. if (geometry.width !== 0 && geometry.height !== 0) { diff --git a/src/ui/services/Services.d.ts b/src/ui/services/Services.d.ts index 17cc4f3b..b7a94ea1 100644 --- a/src/ui/services/Services.d.ts +++ b/src/ui/services/Services.d.ts @@ -10,7 +10,7 @@ export interface ICharSizeService { readonly height: number; readonly hasValidSize: boolean; - readonly onCharSizeChange: IEvent; + readonly onCharSizeChange: IEvent; measure(): void; }