From 7a3204ce57da60afba584629a801c897608329e1 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Mon, 26 Mar 2018 22:58:27 +0200 Subject: [PATCH] Fixes #41968: Keep the top line stable, and not the centered one --- .../contrib/codelens/codelensController.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/vs/editor/contrib/codelens/codelensController.ts b/src/vs/editor/contrib/codelens/codelensController.ts index f3e26373bc6..980b6a07bd3 100644 --- a/src/vs/editor/contrib/codelens/codelensController.ts +++ b/src/vs/editor/contrib/codelens/codelensController.ts @@ -218,8 +218,14 @@ export class CodeLensContribution implements editorCommon.IEditorContribution { } } - const centeredRange = this._editor.getCenteredRangeInViewport(); - const shouldRestoreCenteredRange = centeredRange && (groups.length !== this._lenses.length && this._editor.getScrollTop() !== 0); + const visibleRanges = this._editor.getVisibleRanges(); + const visiblePosition = (visibleRanges.length > 0 ? visibleRanges[0].getStartPosition() : null); + let visiblePositionScrollDelta = 0; + if (visiblePosition) { + const visiblePositionScrollTop = this._editor.getTopForPosition(visiblePosition.lineNumber, visiblePosition.column); + visiblePositionScrollDelta = this._editor.getScrollTop() - visiblePositionScrollTop; + } + this._editor.changeDecorations((changeAccessor) => { this._editor.changeViewZones((accessor) => { @@ -259,8 +265,10 @@ export class CodeLensContribution implements editorCommon.IEditorContribution { helper.commit(changeAccessor); }); }); - if (shouldRestoreCenteredRange) { - this._editor.revealRangeInCenter(centeredRange, editorCommon.ScrollType.Immediate); + + if (visiblePosition) { + const visiblePositionScrollTop = this._editor.getTopForPosition(visiblePosition.lineNumber, visiblePosition.column); + this._editor.setScrollTop(visiblePositionScrollTop + visiblePositionScrollDelta); } } -- GitLab