@@ -60,17 +60,7 @@ export class BufferDecorationRenderer extends Disposable {
6060 }
6161
6262 private _renderDecoration ( decoration : IInternalDecoration ) : void {
63- let element = this . _decorationElements . get ( decoration ) ;
64- if ( ! element ) {
65- element = this . _createElement ( decoration ) ;
66- decoration . onDispose ( ( ) => this . _removeDecoration ( decoration ) ) ;
67- decoration . marker . onDispose ( ( ) => decoration . dispose ( ) ) ;
68- decoration . element = element ;
69- this . _decorationElements . set ( decoration , element ) ;
70- this . _container . appendChild ( element ) ;
71- }
72- this . _refreshStyle ( decoration , element ) ;
73- decoration . onRenderEmitter . fire ( element ) ;
63+ this . _refreshStyle ( decoration ) ;
7464 }
7565
7666 private _createElement ( decoration : IInternalDecoration ) : HTMLElement {
@@ -95,14 +85,26 @@ export class BufferDecorationRenderer extends Disposable {
9585 return element ;
9686 }
9787
98- private _refreshStyle ( decoration : IInternalDecoration , element : HTMLElement ) : void {
88+ private _refreshStyle ( decoration : IInternalDecoration ) : void {
9989 const line = decoration . marker . line - this . _bufferService . buffers . active . ydisp ;
10090 if ( line < 0 || line >= this . _bufferService . rows ) {
10191 // outside of viewport
102- element . style . display = 'none' ;
92+ if ( decoration . element ) {
93+ decoration . element . style . display = 'none' ;
94+ decoration . onRenderEmitter . fire ( decoration . element ) ;
95+ }
10396 } else {
97+ let element = this . _decorationElements . get ( decoration ) ;
98+ if ( ! element ) {
99+ decoration . onDispose ( ( ) => this . _removeDecoration ( decoration ) ) ;
100+ element = this . _createElement ( decoration ) ;
101+ decoration . element = element ;
102+ this . _decorationElements . set ( decoration , element ) ;
103+ this . _container . appendChild ( element ) ;
104+ }
104105 element . style . top = `${ line * this . _renderService . dimensions . actualCellHeight } px` ;
105106 element . style . display = this . _altBufferIsActive ? 'none' : 'block' ;
107+ decoration . onRenderEmitter . fire ( element ) ;
106108 }
107109 }
108110
0 commit comments