From 2a9ec8fd1d31863055bdfddc9fbc759a03d38d22 Mon Sep 17 00:00:00 2001 From: Kelvin Date: Tue, 11 Apr 2023 13:43:32 -0400 Subject: [PATCH 1/2] Re-render browser DOM style onOptionsChanged, fixes xtermjs#4474 Fixes https://github.com/xtermjs/xterm.js/issues/4474 --- src/browser/renderer/dom/DomRenderer.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/browser/renderer/dom/DomRenderer.ts b/src/browser/renderer/dom/DomRenderer.ts index fe6cba2d71..d79a88e19d 100644 --- a/src/browser/renderer/dom/DomRenderer.ts +++ b/src/browser/renderer/dom/DomRenderer.ts @@ -67,7 +67,10 @@ export class DomRenderer extends Disposable implements IRenderer { this.dimensions = createRenderDimensions(); this._updateDimensions(); - this.register(this._optionsService.onOptionChange(() => this._handleOptionsChanged())); + this.register(this._optionsService.onOptionChange(() => { + this._handleOptionsChanged(); + this._injectCss(themeService.colors); + })); this.register(themeService.onChangeColors(e => this._injectCss(e))); this._injectCss(themeService.colors); From 854e2736f66ca3e5d3ab5a7b65bf3fd6fba8b707 Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Sun, 7 May 2023 06:27:56 -0700 Subject: [PATCH 2/2] Move inject into _handleOptionsChanged --- src/browser/renderer/dom/DomRenderer.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/browser/renderer/dom/DomRenderer.ts b/src/browser/renderer/dom/DomRenderer.ts index d79a88e19d..3135e9d22a 100644 --- a/src/browser/renderer/dom/DomRenderer.ts +++ b/src/browser/renderer/dom/DomRenderer.ts @@ -53,7 +53,7 @@ export class DomRenderer extends Disposable implements IRenderer { @IOptionsService private readonly _optionsService: IOptionsService, @IBufferService private readonly _bufferService: IBufferService, @ICoreBrowserService private readonly _coreBrowserService: ICoreBrowserService, - @IThemeService themeService: IThemeService + @IThemeService private readonly _themeService: IThemeService ) { super(); this._rowContainer = document.createElement('div'); @@ -67,13 +67,10 @@ export class DomRenderer extends Disposable implements IRenderer { this.dimensions = createRenderDimensions(); this._updateDimensions(); - this.register(this._optionsService.onOptionChange(() => { - this._handleOptionsChanged(); - this._injectCss(themeService.colors); - })); + this.register(this._optionsService.onOptionChange(() => this._handleOptionsChanged())); - this.register(themeService.onChangeColors(e => this._injectCss(e))); - this._injectCss(themeService.colors); + this.register(this._themeService.onChangeColors(e => this._injectCss(e))); + this._injectCss(this._themeService.colors); this._rowFactory = instantiationService.createInstance(DomRendererRowFactory, document); @@ -343,6 +340,8 @@ export class DomRenderer extends Disposable implements IRenderer { private _handleOptionsChanged(): void { // Force a refresh this._updateDimensions(); + // Refresh CSS + this._injectCss(this._themeService.colors); } public clear(): void {