From 191c3345f175d5fa40a6c8ce6fc9fabc4754b05b Mon Sep 17 00:00:00 2001 From: Aiday Marlen Kyzy Date: Tue, 22 Aug 2023 11:57:17 +0200 Subject: [PATCH] uncollapsing now works as expected, when it is uncollapsed, we jump to the correct part --- .../stickyScroll/browser/stickyScrollWidget.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.ts b/src/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.ts index f6a8c8d1795..4a73254d35f 100644 --- a/src/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.ts +++ b/src/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.ts @@ -42,6 +42,8 @@ export class StickyScrollWidget extends Disposable implements IOverlayWidget { private _stickyLines: RenderedStickyLine[] = []; private _lineNumbers: number[] = []; + private _startLineNumbers: number[] = []; + private _endLineNumbers: number[] = []; private _lastLineRelativePosition: number = 0; private _minContentWidthInPx: number = 0; @@ -118,9 +120,13 @@ export class StickyScrollWidget extends Disposable implements IOverlayWidget { lineNumbers[state.showEndForLine] = state.endLineNumbers[state.showEndForLine]; } this._lineNumbers = lineNumbers; + this._startLineNumbers = state.startLineNumbers; + this._endLineNumbers = state.endLineNumbers; } else { this._lastLineRelativePosition = 0; this._lineNumbers = []; + this._startLineNumbers = []; + this._endLineNumbers = []; } this._renderRootNode(); } @@ -273,9 +279,14 @@ export class StickyScrollWidget extends Disposable implements IOverlayWidget { // there appears to be an error here, doesn't behave exactly as expected // TODO: continuous rerendering of the arrow, which need not be rerendered if already in the right collapsed state console.log('collapsed : ', collapsed); - console.log('18 * (this._stickyLines.length - 1 - index) : ', 18 * (this._stickyLines.length - 1 - index)); // When collapsed we should go to scrollTop - 18 * (this._stickyLines.length - index) - const newHeight = scrollTop - 18 * (this._stickyLines.length - index); + + const topOfStart = this._editor.getTopForLineNumber(this._startLineNumbers[index]) - lineHeight * (index) + 1; + const topOfEnd = this._editor.getTopForLineNumber(this._endLineNumbers[index]); + console.log('topOfStart : ', topOfStart); + console.log('topOfEnd : ', topOfEnd); + + const newHeight = collapsed ? topOfEnd : topOfStart; console.log('newHeight : ', newHeight); this._editor.setScrollTop(newHeight); if (editorDomNode) {