Skip to content

Commit 54314d9

Browse files
authored
Merge pull request #262436 from microsoft/anthonykim1/terminalStickyFlashFix
Fix terminal sticky scroll flash when pager
2 parents 0e6bda6 + 5132313 commit 54314d9

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

src/vs/workbench/contrib/terminalContrib/stickyScroll/browser/terminalStickyScrollOverlay.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import type { WebglAddon as WebglAddonType } from '@xterm/addon-webgl';
88
import type { LigaturesAddon as LigaturesAddonType } from '@xterm/addon-ligatures';
99
import type { IBufferLine, IMarker, ITerminalOptions, ITheme, Terminal as RawXtermTerminal, Terminal as XTermTerminal } from '@xterm/xterm';
1010
import { $, addDisposableListener, addStandardDisposableListener, getWindow } from '../../../../../base/browser/dom.js';
11-
import { throttle } from '../../../../../base/common/decorators.js';
11+
import { debounce, throttle } from '../../../../../base/common/decorators.js';
1212
import { Event } from '../../../../../base/common/event.js';
1313
import { Disposable, MutableDisposable, combinedDisposable, toDisposable } from '../../../../../base/common/lifecycle.js';
1414
import { removeAnsiEscapeCodes } from '../../../../../base/common/strings.js';
@@ -63,6 +63,7 @@ export class TerminalStickyScrollOverlay extends Disposable {
6363
private _state: OverlayState = OverlayState.Off;
6464
private _isRefreshQueued = false;
6565
private _rawMaxLineCount: number = 5;
66+
private _pendingShowOperation = false;
6667

6768
constructor(
6869
private readonly _instance: ITerminalInstance,
@@ -187,9 +188,25 @@ export class TerminalStickyScrollOverlay extends Disposable {
187188

188189
private _setVisible(isVisible: boolean) {
189190
if (isVisible) {
191+
this._pendingShowOperation = true;
192+
this._show();
193+
} else {
194+
this._hide();
195+
}
196+
}
197+
198+
@debounce(100)
199+
private _show(): void {
200+
if (this._pendingShowOperation) {
190201
this._ensureElement();
202+
this._element?.classList.toggle(CssClasses.Visible, true);
191203
}
192-
this._element?.classList.toggle(CssClasses.Visible, isVisible);
204+
this._pendingShowOperation = false;
205+
}
206+
207+
private _hide(): void {
208+
this._pendingShowOperation = false;
209+
this._element?.classList.toggle(CssClasses.Visible, false);
193210
}
194211

195212
private _refresh(): void {

0 commit comments

Comments
 (0)