mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-24 04:09:28 +00:00
This should help improve scroll sync and also reduce the number of times we go out to the network if images are in the preview
35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
import { getElementsForSourceLine } from './scroll-sync';
|
|
|
|
export class ActiveLineMarker {
|
|
private _current: any;
|
|
|
|
onDidChangeTextEditorSelection(line: number, documentVersion: number) {
|
|
const { previous } = getElementsForSourceLine(line, documentVersion);
|
|
this._update(previous && previous.element);
|
|
}
|
|
|
|
_update(before: HTMLElement | undefined) {
|
|
this._unmarkActiveElement(this._current);
|
|
this._markActiveElement(before);
|
|
this._current = before;
|
|
}
|
|
|
|
_unmarkActiveElement(element: HTMLElement | undefined) {
|
|
if (!element) {
|
|
return;
|
|
}
|
|
element.className = element.className.replace(/\bcode-active-line\b/g, '');
|
|
}
|
|
|
|
_markActiveElement(element: HTMLElement | undefined) {
|
|
if (!element) {
|
|
return;
|
|
}
|
|
element.className += ' code-active-line';
|
|
}
|
|
}
|