Skip to content

Commit 2ea55a5

Browse files
committed
Remove the attribute monaco-visible-view-zone on view zones that are in folded regions (microsoft#121516)
1 parent d599347 commit 2ea55a5

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

src/vs/editor/browser/viewParts/viewZones/viewZones.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,14 @@ import { IWhitespaceChangeAccessor, IEditorWhitespace } from 'vs/editor/common/v
1818
export interface IMyViewZone {
1919
whitespaceId: string;
2020
delegate: IViewZone;
21+
isInHiddenArea: boolean;
2122
isVisible: boolean;
2223
domNode: FastDomNode<HTMLElement>;
2324
marginDomNode: FastDomNode<HTMLElement> | null;
2425
}
2526

2627
interface IComputedViewZoneProps {
28+
isInHiddenArea: boolean;
2729
afterViewLineNumber: number;
2830
heightInPx: number;
2931
minWidthInPx: number;
@@ -86,6 +88,7 @@ export class ViewZones extends ViewPart {
8688
const id = keys[i];
8789
const zone = this._zones[id];
8890
const props = this._computeWhitespaceProps(zone.delegate);
91+
zone.isInHiddenArea = props.isInHiddenArea;
8992
const oldWhitespace = oldWhitespaces.get(id);
9093
if (oldWhitespace && (oldWhitespace.afterLineNumber !== props.afterViewLineNumber || oldWhitespace.height !== props.heightInPx)) {
9194
whitespaceAccessor.changeOneWhitespace(id, props.afterViewLineNumber, props.heightInPx);
@@ -146,6 +149,7 @@ export class ViewZones extends ViewPart {
146149
private _computeWhitespaceProps(zone: IViewZone): IComputedViewZoneProps {
147150
if (zone.afterLineNumber === 0) {
148151
return {
152+
isInHiddenArea: false,
149153
afterViewLineNumber: 0,
150154
heightInPx: this._heightInPixels(zone),
151155
minWidthInPx: this._minWidthInPixels(zone)
@@ -186,6 +190,7 @@ export class ViewZones extends ViewPart {
186190
const viewPosition = this._context.model.coordinatesConverter.convertModelPositionToViewPosition(zoneAfterModelPosition);
187191
const isVisible = this._context.model.coordinatesConverter.modelPositionIsVisible(zoneBeforeModelPosition);
188192
return {
193+
isInHiddenArea: !isVisible,
189194
afterViewLineNumber: viewPosition.lineNumber,
190195
heightInPx: (isVisible ? this._heightInPixels(zone) : 0),
191196
minWidthInPx: this._minWidthInPixels(zone)
@@ -234,6 +239,7 @@ export class ViewZones extends ViewPart {
234239
const myZone: IMyViewZone = {
235240
whitespaceId: whitespaceId,
236241
delegate: zone,
242+
isInHiddenArea: props.isInHiddenArea,
237243
isVisible: false,
238244
domNode: createFastDomNode(zone.domNode),
239245
marginDomNode: zone.marginDomNode ? createFastDomNode(zone.marginDomNode) : null
@@ -290,6 +296,7 @@ export class ViewZones extends ViewPart {
290296
if (this._zones.hasOwnProperty(id)) {
291297
const zone = this._zones[id];
292298
const props = this._computeWhitespaceProps(zone.delegate);
299+
zone.isInHiddenArea = props.isInHiddenArea;
293300
// const newOrdinal = this._getZoneOrdinal(zone.delegate);
294301
whitespaceAccessor.changeOneWhitespace(zone.whitespaceId, props.afterViewLineNumber, props.heightInPx);
295302
// TODO@Alex: change `newOrdinal` too
@@ -356,8 +363,11 @@ export class ViewZones extends ViewPart {
356363
const visibleZones: { [id: string]: IViewWhitespaceViewportData; } = {};
357364

358365
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;
361371
hasVisibleZone = true;
362372
}
363373

0 commit comments

Comments
 (0)