From de574a27fc71ec5544e15d767789d2a1e6dc0bc9 Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Tue, 10 May 2022 05:44:00 -0700 Subject: [PATCH] Full re-render when there are decoration changes --- demo/client.ts | 2 +- src/browser/services/RenderService.ts | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/demo/client.ts b/demo/client.ts index 3996652a..a63864a2 100644 --- a/demo/client.ts +++ b/demo/client.ts @@ -114,7 +114,7 @@ function getSearchOptions(e: KeyboardEvent): ISearchOptions { matchBorder: '#555753', matchOverviewRuler: '#555753', activeMatchBackground: '#ef2929', - activeMatchBorder: '#ef2929', + activeMatchBorder: '#ffffff', activeMatchColorOverviewRuler: '#ef2929' } : undefined }; diff --git a/src/browser/services/RenderService.ts b/src/browser/services/RenderService.ts index 91b510a3..a789e025 100644 --- a/src/browser/services/RenderService.ts +++ b/src/browser/services/RenderService.ts @@ -10,7 +10,7 @@ import { Disposable } from 'common/Lifecycle'; import { ScreenDprMonitor } from 'browser/ScreenDprMonitor'; import { addDisposableDomListener } from 'browser/Lifecycle'; import { IColorSet, IRenderDebouncer } from 'browser/Types'; -import { IOptionsService, IBufferService } from 'common/services/Services'; +import { IOptionsService, IBufferService, IDecorationService } from 'common/services/Services'; import { ICharSizeService, IRenderService } from 'browser/services/Services'; interface ISelectionState { @@ -54,6 +54,7 @@ export class RenderService extends Disposable implements IRenderService { screenElement: HTMLElement, @IOptionsService optionsService: IOptionsService, @ICharSizeService private readonly _charSizeService: ICharSizeService, + @IDecorationService decorationService: IDecorationService, @IBufferService bufferService: IBufferService ) { super(); @@ -67,6 +68,9 @@ export class RenderService extends Disposable implements IRenderService { this._screenDprMonitor.setListener(() => this.onDevicePixelRatioChange()); this.register(this._screenDprMonitor); + // TODO: This will slow things down + this.register(decorationService.onDecorationRegistered(() => this._fullRefresh())); + this.register(decorationService.onDecorationRemoved(() => this._fullRefresh())); this.register(bufferService.onResize(() => this._fullRefresh())); this.register(bufferService.buffers.onBufferActivate(() => this._renderer?.clear())); this.register(optionsService.onOptionChange(() => this._renderer.onOptionsChanged()));