Skip to content

Commit 9b68497

Browse files
committed
doing optimization
1 parent b457942 commit 9b68497

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@ export class StickyScrollWidgetState {
2121
readonly lineNumbers: number[],
2222
readonly lastLineRelativePosition: number
2323
) { }
24+
25+
public equals(other: StickyScrollWidgetState | undefined): boolean {
26+
return !!other && this.lastLineRelativePosition === other.lastLineRelativePosition
27+
&& this.lineNumbers.length === other.lineNumbers.length
28+
&& this.lineNumbers.every((lineNumber, index) => lineNumber === other.lineNumbers[index]);
29+
}
2430
}
2531

2632
const _ttPolicy = createTrustedTypesPolicy('stickyScrollViewLayer', { createHTML: value => value });
@@ -35,6 +41,7 @@ export class StickyScrollWidget extends Disposable implements IOverlayWidget {
3541
private _lastLineRelativePosition: number = 0;
3642
private _hoverOnLine: number = -1;
3743
private _hoverOnColumn: number = -1;
44+
private _state: StickyScrollWidgetState | undefined;
3845

3946
constructor(
4047
private readonly _editor: ICodeEditor
@@ -68,6 +75,10 @@ export class StickyScrollWidget extends Disposable implements IOverlayWidget {
6875
}
6976

7077
setState(state: StickyScrollWidgetState): void {
78+
if (state.equals(this._state)) {
79+
return;
80+
}
81+
this._state = state;
7182
dom.clearNode(this._rootDomNode);
7283
this._disposableStore.clear();
7384
this._lineNumbers.length = 0;

0 commit comments

Comments
 (0)