From 63d9bf409bd3ff4f9bca6dbae6c94c1355401189 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 17 Apr 2018 23:23:39 +0200 Subject: [PATCH] Fixes #35770 --- .../viewParts/selections/selections.ts | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/vs/editor/browser/viewParts/selections/selections.ts b/src/vs/editor/browser/viewParts/selections/selections.ts index c25e5869f40..a3e1d9e1dec 100644 --- a/src/vs/editor/browser/viewParts/selections/selections.ts +++ b/src/vs/editor/browser/viewParts/selections/selections.ts @@ -158,7 +158,7 @@ export class SelectionsOverlay extends DynamicViewOverlay { return false; } - private _enrichVisibleRangesWithStyle(linesVisibleRanges: LineVisibleRangesWithStyle[], previousFrame: LineVisibleRangesWithStyle[]): void { + private _enrichVisibleRangesWithStyle(viewport: Range, linesVisibleRanges: LineVisibleRangesWithStyle[], previousFrame: LineVisibleRangesWithStyle[]): void { const epsilon = this._typicalHalfwidthCharacterWidth / 4; let previousFrameTop: HorizontalRangeWithStyle = null; let previousFrameBottom: HorizontalRangeWithStyle = null; @@ -166,16 +166,20 @@ export class SelectionsOverlay extends DynamicViewOverlay { if (previousFrame && previousFrame.length > 0 && linesVisibleRanges.length > 0) { let topLineNumber = linesVisibleRanges[0].lineNumber; - for (let i = 0; !previousFrameTop && i < previousFrame.length; i++) { - if (previousFrame[i].lineNumber === topLineNumber) { - previousFrameTop = previousFrame[i].ranges[0]; + if (topLineNumber === viewport.startLineNumber) { + for (let i = 0; !previousFrameTop && i < previousFrame.length; i++) { + if (previousFrame[i].lineNumber === topLineNumber) { + previousFrameTop = previousFrame[i].ranges[0]; + } } } let bottomLineNumber = linesVisibleRanges[linesVisibleRanges.length - 1].lineNumber; - for (let i = previousFrame.length - 1; !previousFrameBottom && i >= 0; i--) { - if (previousFrame[i].lineNumber === bottomLineNumber) { - previousFrameBottom = previousFrame[i].ranges[0]; + if (bottomLineNumber === viewport.endLineNumber) { + for (let i = previousFrame.length - 1; !previousFrameBottom && i >= 0; i--) { + if (previousFrame[i].lineNumber === bottomLineNumber) { + previousFrameBottom = previousFrame[i].ranges[0]; + } } } @@ -258,7 +262,7 @@ export class SelectionsOverlay extends DynamicViewOverlay { let visibleRangesHaveGaps = this._visibleRangesHaveGaps(linesVisibleRanges); if (!isIEWithZoomingIssuesNearRoundedBorders && !visibleRangesHaveGaps && this._roundedSelection) { - this._enrichVisibleRangesWithStyle(linesVisibleRanges, previousFrame); + this._enrichVisibleRangesWithStyle(ctx.visibleRange, linesVisibleRanges, previousFrame); } // The visible ranges are sorted TOP-BOTTOM and LEFT-RIGHT -- GitLab