Skip to content

Commit 62f7d89

Browse files
author
aiday-mar
committed
cleaning the code with the review
1 parent 087b9f7 commit 62f7d89

File tree

2 files changed

+30
-21
lines changed

2 files changed

+30
-21
lines changed

src/vs/editor/contrib/stickyScroll/browser/stickyScroll.ts

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class StickyScrollController implements IEditorContribution {
3333
private readonly _store: DisposableStore = new DisposableStore();
3434
private readonly _sessionStore: DisposableStore = new DisposableStore();
3535

36-
private _ranges: any[][] = [];
36+
private _ranges: [number, number, number][] = [];
3737
private _cts: CancellationTokenSource | undefined;
3838
private _lastScrollPosition: number = -1;
3939

@@ -156,7 +156,7 @@ class StickyScrollController implements IEditorContribution {
156156
return;
157157
}
158158

159-
const lineHeight = this._editor.getOption(EditorOption.lineHeight);
159+
const lineHeight: number = this._editor.getOption(EditorOption.lineHeight);
160160
const model = this._editor.getModel();
161161

162162
const scrollTop = this._editor.getScrollTop();
@@ -168,26 +168,35 @@ class StickyScrollController implements IEditorContribution {
168168
}
169169
this._lastScrollPosition = scrollTop;
170170

171-
const scrollTopFromLengthOfArray: number = this._editor.getScrollTop() + this.stickyScrollWidget.codeLineCount * lineHeight + 1;
171+
const scrollToBottomOfWidget = this._editor.getScrollTop() + this.stickyScrollWidget.codeLineCount * lineHeight;
172172
this.stickyScrollWidget.emptyRootNode();
173-
const beginningLinesConsidered = new Set();
173+
const beginningLinesConsidered: Set<number> = new Set<number>();
174+
let topOfElementAtDepth: number;
175+
let bottomOfElementAtDepth: number;
176+
let bottomOfBeginningLine: number;
177+
let topOfEndLine: number;
178+
let bottomOfEndLine: number;
174179

175180
for (const [index, arr] of this._ranges.entries()) {
176181
const [start, end, depth] = arr;
177-
const scrollTopFromDepth: number = this._editor.getScrollTop() + depth * lineHeight + 1;
182+
topOfElementAtDepth = this._editor.getScrollTop() + (depth - 1) * lineHeight;
183+
bottomOfElementAtDepth = this._editor.getScrollTop() + depth * lineHeight;
184+
bottomOfBeginningLine = start * lineHeight;
185+
topOfEndLine = (end - 1) * lineHeight;
186+
bottomOfEndLine = end * lineHeight;
178187

179188
if (!beginningLinesConsidered.has(start)) {
180-
if (this._editor.getScrollTop() + (depth - 1) * lineHeight + 1 >= (end - 1) * lineHeight && this._editor.getScrollTop() + (depth - 1) * lineHeight < end * lineHeight - 2) {
189+
if (topOfElementAtDepth >= topOfEndLine - 1 && topOfElementAtDepth < bottomOfEndLine - 2) {
181190
beginningLinesConsidered.add(start);
182-
this.stickyScrollWidget.pushCodeLine(new StickyScrollCodeLine(model.getLineContent(start), start, this._editor, -1, (depth - 1) * lineHeight + end * lineHeight - this._editor.getScrollTop() - depth * lineHeight));
191+
this.stickyScrollWidget.pushCodeLine(new StickyScrollCodeLine(model.getLineContent(start), start, this._editor, -1, (depth - 1) * lineHeight + bottomOfEndLine - bottomOfElementAtDepth));
183192
break;
184193
}
185-
else if (scrollDirection === ScrollDirection.Down && scrollTopFromDepth > start * lineHeight && scrollTopFromDepth < end * lineHeight) {
194+
else if (scrollDirection === ScrollDirection.Down && bottomOfElementAtDepth > bottomOfBeginningLine - 1 && bottomOfElementAtDepth < bottomOfEndLine - 1) {
186195
beginningLinesConsidered.add(start);
187196
this.stickyScrollWidget.pushCodeLine(new StickyScrollCodeLine(model.getLineContent(start), start, this._editor, 0));
188197

189-
} else if (scrollDirection === ScrollDirection.Up && scrollTopFromLengthOfArray > start * lineHeight && scrollTopFromLengthOfArray < end * lineHeight ||
190-
scrollDirection === ScrollDirection.Up && scrollTopFromDepth >= start * lineHeight && scrollTopFromDepth < (end - 1) * lineHeight) {
198+
} else if (scrollDirection === ScrollDirection.Up && scrollToBottomOfWidget > bottomOfBeginningLine - 1 && scrollToBottomOfWidget < bottomOfEndLine ||
199+
scrollDirection === ScrollDirection.Up && bottomOfElementAtDepth > bottomOfBeginningLine && bottomOfElementAtDepth < topOfEndLine - 1) {
191200
beginningLinesConsidered.add(start);
192201
this.stickyScrollWidget.pushCodeLine(new StickyScrollCodeLine(model.getLineContent(start), start, this._editor, 0));
193202
}
@@ -236,19 +245,19 @@ class StickyScrollCodeLine {
236245
lineHTMLNode.style.paddingLeft = this._editor.getLayoutInfo().contentLeft - this._editor.getLayoutInfo().lineNumbersLeft - this._editor.getLayoutInfo().lineNumbersWidth + 'px';
237246
lineHTMLNode.style.float = 'left';
238247
lineHTMLNode.style.width = this._editor.getLayoutInfo().width - this._editor.getLayoutInfo().contentLeft + 'px';
239-
lineHTMLNode.style.backgroundColor = `var(--vscode-stickyScroll-background)`;
248+
lineHTMLNode.style.backgroundColor = `var(--vscode-editorStickyScroll-background)`;
240249
lineHTMLNode.innerHTML = newLine as string;
241250

242251
const lineNumberHTMLNode = document.createElement('div');
243252
lineNumberHTMLNode.style.width = this._editor.getLayoutInfo().contentLeft.toString() + 'px';
244-
lineNumberHTMLNode.style.backgroundColor = `var(--vscode-stickyScroll-background)`;
253+
lineNumberHTMLNode.style.backgroundColor = `var(--vscode-editorStickyScroll-background)`;
245254
lineNumberHTMLNode.style.color = 'var(--vscode-editorLineNumber-foreground)';
246255

247256
const innerLineNumberHTML = document.createElement('div');
248257
innerLineNumberHTML.innerText = this._lineNumber.toString();
249258
innerLineNumberHTML.style.paddingLeft = this._editor.getLayoutInfo().lineNumbersLeft.toString() + 'px';
250259
innerLineNumberHTML.style.width = this._editor.getLayoutInfo().lineNumbersWidth.toString() + 'px';
251-
innerLineNumberHTML.style.backgroundColor = `var(--vscode-stickyScroll-background)`;
260+
innerLineNumberHTML.style.backgroundColor = `var(--vscode-editorStickyScroll-background)`;
252261
innerLineNumberHTML.style.textAlign = 'right';
253262
innerLineNumberHTML.style.float = 'left';
254263
lineNumberHTMLNode.appendChild(innerLineNumberHTML);
@@ -259,14 +268,14 @@ class StickyScrollCodeLine {
259268
this._editor.revealLine(this._lineNumber);
260269
};
261270
lineHTMLNode.onmouseover = e => {
262-
innerLineNumberHTML.style.background = `var(--vscode-stickyScrollHover-background)`;
263-
lineHTMLNode.style.backgroundColor = `var(--vscode-stickyScrollHover-background)`;
271+
innerLineNumberHTML.style.background = `var(--vscode-editorStickyScrollHover-background)`;
272+
lineHTMLNode.style.backgroundColor = `var(--vscode-editorStickyScrollHover-background)`;
264273
innerLineNumberHTML.style.cursor = `pointer`;
265274
lineHTMLNode.style.cursor = `pointer`;
266275
};
267276
lineHTMLNode.onmouseleave = e => {
268-
innerLineNumberHTML.style.background = `var(--vscode-stickyScroll-background)`;
269-
lineHTMLNode.style.backgroundColor = `var(--vscode-stickyScroll-background)`;
277+
innerLineNumberHTML.style.background = `var(--vscode-editorStickyScroll-background)`;
278+
lineHTMLNode.style.backgroundColor = `var(--vscode-editorStickyScroll-background)`;
270279
};
271280

272281
this._editor.applyFontInfo(lineHTMLNode);
@@ -276,7 +285,7 @@ class StickyScrollCodeLine {
276285
root.appendChild(lineHTMLNode);
277286

278287
root.style.zIndex = this._zIndex.toString();
279-
root.style.backgroundColor = `var(--vscode-stickyScroll-background)`;
288+
root.style.backgroundColor = `var(--vscode-editorStickyScroll-background)`;
280289

281290
// Special case for last line of sticky scroll
282291
if (this._position) {
@@ -323,7 +332,7 @@ class StickyScrollWidget implements IOverlayWidget {
323332

324333
getDomNode(): HTMLElement {
325334
this.rootDomNode.style.zIndex = '2';
326-
this.rootDomNode.style.backgroundColor = `var(--vscode-stickyScroll-background)`;
335+
this.rootDomNode.style.backgroundColor = `var(--vscode-editorStickyScroll-background)`;
327336
return this.rootDomNode;
328337
}
329338

src/vs/platform/theme/common/colorRegistry.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -317,8 +317,8 @@ export const editorForeground = registerColor('editor.foreground', { light: '#33
317317
/**
318318
* Sticky scroll
319319
*/
320-
export const stickyScrollBackground = registerColor('stickyScroll.background', { light: darken(editorBackground, 0.2), dark: lighten(editorBackground, 0.2), hcDark: lighten(editorBackground, 0.2), hcLight: darken(editorBackground, 0.2) }, nls.localize('stickyScrollBackground', "Sticky scroll background color"));
321-
export const stickyScrollHoverBackground = registerColor('stickyScrollHover.background', { light: darken(editorBackground, 0.4), dark: lighten(editorBackground, 0.4), hcDark: lighten(editorBackground, 0.4), hcLight: darken(editorBackground, 0.4) }, nls.localize('stickyScrollHoverBackground', "Sticky scroll on hover background color"));
320+
export const editorStickyScrollBackground = registerColor('editorStickyScroll.background', { light: darken(editorBackground, 0.2), dark: lighten(editorBackground, 0.2), hcDark: lighten(editorBackground, 0.2), hcLight: darken(editorBackground, 0.2) }, nls.localize('editorStickyScrollBackground', "Sticky scroll background color for the editor"));
321+
export const editorStickyScrollHoverBackground = registerColor('editorStickyScrollHover.background', { light: darken(editorBackground, 0.4), dark: lighten(editorBackground, 0.4), hcDark: lighten(editorBackground, 0.4), hcLight: darken(editorBackground, 0.4) }, nls.localize('editorStickyScrollHoverBackground', "Sticky scroll on hover background color for the editor"));
322322

323323
/**
324324
* Editor widgets

0 commit comments

Comments
 (0)