@@ -8,6 +8,7 @@ import { WidthCache } from 'browser/renderer/dom/WidthCache';
88import { INVERTED_DEFAULT_COLOR , RendererConstants } from 'browser/renderer/shared/Constants' ;
99import { createRenderDimensions } from 'browser/renderer/shared/RendererUtils' ;
1010import { createSelectionRenderModel } from 'browser/renderer/shared/SelectionRenderModel' ;
11+ import { TextBlinkStateManager } from 'browser/renderer/shared/TextBlinkStateManager' ;
1112import { IRenderDimensions , IRenderer , IRequestRedrawEvent , ISelectionRenderModel } from 'browser/renderer/shared/Types' ;
1213import { ICharSizeService , ICoreBrowserService , IThemeService } from 'browser/services/Services' ;
1314import { ILinkifier2 , ILinkifierEvent , ITerminal , ReadonlyColorSet } from 'browser/Types' ;
@@ -45,10 +46,12 @@ export class DomRenderer extends Disposable implements IRenderer {
4546 private _widthCache : WidthCache ;
4647 private _selectionRenderModel : ISelectionRenderModel = createSelectionRenderModel ( ) ;
4748 private _cursorBlinkStateManager : CursorBlinkStateManager ;
49+ private _textBlinkStateManager : TextBlinkStateManager ;
4850
4951 public dimensions : IRenderDimensions ;
5052
51- public readonly onRequestRedraw = this . _register ( new Emitter < IRequestRedrawEvent > ( ) ) . event ;
53+ private readonly _onRequestRedraw = this . _register ( new Emitter < IRequestRedrawEvent > ( ) ) ;
54+ public readonly onRequestRedraw = this . _onRequestRedraw . event ;
5255
5356 constructor (
5457 private readonly _terminal : ITerminal ,
@@ -95,6 +98,12 @@ export class DomRenderer extends Disposable implements IRenderer {
9598 this . _cursorBlinkStateManager = new CursorBlinkStateManager ( this . _rowContainer , this . _coreBrowserService ) ;
9699 this . _register ( addDisposableListener ( this . _document , 'mousedown' , ( ) => this . _cursorBlinkStateManager . restartBlinkAnimation ( ) ) ) ;
97100 this . _register ( toDisposable ( ( ) => this . _cursorBlinkStateManager . dispose ( ) ) ) ;
101+ this . _textBlinkStateManager = new TextBlinkStateManager (
102+ ( ) => this . _onRequestRedraw . fire ( { start : 0 , end : this . _bufferService . rows - 1 } ) ,
103+ this . _coreBrowserService
104+ ) ;
105+ this . _textBlinkStateManager . setIntervalDuration ( this . _optionsService . rawOptions . blinkIntervalDuration ) ;
106+ this . _register ( toDisposable ( ( ) => this . _textBlinkStateManager . dispose ( ) ) ) ;
98107
99108 this . _register ( toDisposable ( ( ) => {
100109 this . _element . classList . remove ( TERMINAL_CLASS_PREFIX + this . _terminalClass ) ;
@@ -193,6 +202,9 @@ export class DomRenderer extends Disposable implements IRenderer {
193202 `}` +
194203 `${ this . _terminalSelector } span.${ RowCss . ITALIC_CLASS } {` +
195204 ` font-style: italic;` +
205+ `}` +
206+ `${ this . _terminalSelector } span.${ RowCss . BLINK_HIDDEN_CLASS } {` +
207+ ` visibility: hidden;` +
196208 `}` ;
197209 // Blink animation
198210 const blinkAnimationUnderlineId = `blink_underline_${ this . _terminalClass } ` ;
@@ -436,6 +448,7 @@ export class DomRenderer extends Disposable implements IRenderer {
436448 this . _optionsService . rawOptions . fontWeightBold
437449 ) ;
438450 this . _setDefaultSpacing ( ) ;
451+ this . _textBlinkStateManager . setIntervalDuration ( this . _optionsService . rawOptions . blinkIntervalDuration ) ;
439452 }
440453
441454 public clear ( ) : void {
@@ -476,6 +489,7 @@ export class DomRenderer extends Disposable implements IRenderer {
476489 cursorInactiveStyle ,
477490 cursorX ,
478491 cursorBlink ,
492+ this . _textBlinkStateManager . isBlinkOn ,
479493 this . dimensions . css . cell . width ,
480494 this . _widthCache ,
481495 - 1 ,
@@ -545,6 +559,7 @@ export class DomRenderer extends Disposable implements IRenderer {
545559 cursorInactiveStyle ,
546560 cursorX ,
547561 cursorBlink ,
562+ this . _textBlinkStateManager . isBlinkOn ,
548563 this . dimensions . css . cell . width ,
549564 this . _widthCache ,
550565 enabled ? ( i === y ? x : 0 ) : - 1 ,
0 commit comments