@@ -18,12 +18,14 @@ import { IWhitespaceChangeAccessor, IEditorWhitespace } from 'vs/editor/common/v
18
18
export interface IMyViewZone {
19
19
whitespaceId : string ;
20
20
delegate : IViewZone ;
21
+ isInHiddenArea : boolean ;
21
22
isVisible : boolean ;
22
23
domNode : FastDomNode < HTMLElement > ;
23
24
marginDomNode : FastDomNode < HTMLElement > | null ;
24
25
}
25
26
26
27
interface IComputedViewZoneProps {
28
+ isInHiddenArea : boolean ;
27
29
afterViewLineNumber : number ;
28
30
heightInPx : number ;
29
31
minWidthInPx : number ;
@@ -86,6 +88,7 @@ export class ViewZones extends ViewPart {
86
88
const id = keys [ i ] ;
87
89
const zone = this . _zones [ id ] ;
88
90
const props = this . _computeWhitespaceProps ( zone . delegate ) ;
91
+ zone . isInHiddenArea = props . isInHiddenArea ;
89
92
const oldWhitespace = oldWhitespaces . get ( id ) ;
90
93
if ( oldWhitespace && ( oldWhitespace . afterLineNumber !== props . afterViewLineNumber || oldWhitespace . height !== props . heightInPx ) ) {
91
94
whitespaceAccessor . changeOneWhitespace ( id , props . afterViewLineNumber , props . heightInPx ) ;
@@ -146,6 +149,7 @@ export class ViewZones extends ViewPart {
146
149
private _computeWhitespaceProps ( zone : IViewZone ) : IComputedViewZoneProps {
147
150
if ( zone . afterLineNumber === 0 ) {
148
151
return {
152
+ isInHiddenArea : false ,
149
153
afterViewLineNumber : 0 ,
150
154
heightInPx : this . _heightInPixels ( zone ) ,
151
155
minWidthInPx : this . _minWidthInPixels ( zone )
@@ -186,6 +190,7 @@ export class ViewZones extends ViewPart {
186
190
const viewPosition = this . _context . model . coordinatesConverter . convertModelPositionToViewPosition ( zoneAfterModelPosition ) ;
187
191
const isVisible = this . _context . model . coordinatesConverter . modelPositionIsVisible ( zoneBeforeModelPosition ) ;
188
192
return {
193
+ isInHiddenArea : ! isVisible ,
189
194
afterViewLineNumber : viewPosition . lineNumber ,
190
195
heightInPx : ( isVisible ? this . _heightInPixels ( zone ) : 0 ) ,
191
196
minWidthInPx : this . _minWidthInPixels ( zone )
@@ -234,6 +239,7 @@ export class ViewZones extends ViewPart {
234
239
const myZone : IMyViewZone = {
235
240
whitespaceId : whitespaceId ,
236
241
delegate : zone ,
242
+ isInHiddenArea : props . isInHiddenArea ,
237
243
isVisible : false ,
238
244
domNode : createFastDomNode ( zone . domNode ) ,
239
245
marginDomNode : zone . marginDomNode ? createFastDomNode ( zone . marginDomNode ) : null
@@ -290,6 +296,7 @@ export class ViewZones extends ViewPart {
290
296
if ( this . _zones . hasOwnProperty ( id ) ) {
291
297
const zone = this . _zones [ id ] ;
292
298
const props = this . _computeWhitespaceProps ( zone . delegate ) ;
299
+ zone . isInHiddenArea = props . isInHiddenArea ;
293
300
// const newOrdinal = this._getZoneOrdinal(zone.delegate);
294
301
whitespaceAccessor . changeOneWhitespace ( zone . whitespaceId , props . afterViewLineNumber , props . heightInPx ) ;
295
302
// TODO@Alex : change `newOrdinal` too
@@ -356,8 +363,11 @@ export class ViewZones extends ViewPart {
356
363
const visibleZones : { [ id : string ] : IViewWhitespaceViewportData ; } = { } ;
357
364
358
365
let hasVisibleZone = false ;
359
- for ( let i = 0 , len = visibleWhitespaces . length ; i < len ; i ++ ) {
360
- visibleZones [ visibleWhitespaces [ i ] . id ] = visibleWhitespaces [ i ] ;
366
+ for ( const visibleWhitespace of visibleWhitespaces ) {
367
+ if ( this . _zones [ visibleWhitespace . id ] . isInHiddenArea ) {
368
+ continue ;
369
+ }
370
+ visibleZones [ visibleWhitespace . id ] = visibleWhitespace ;
361
371
hasVisibleZone = true ;
362
372
}
363
373
0 commit comments