Skip to content

Commit

Permalink
Merge pull request #5037 from Tyriar/tyriar/5036
Browse files Browse the repository at this point in the history
Prevent smooth scroll from running more than once per frame
  • Loading branch information
Tyriar committed Apr 20, 2024
2 parents 47a4687 + 16db227 commit 21d7f78
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion src/browser/Viewport.ts
Expand Up @@ -36,6 +36,8 @@ export class Viewport extends Disposable implements IViewport {
private _activeBuffer: IBuffer;
private _renderDimensions: IRenderDimensions;

private _smoothScrollAnimationFrame: number = 0;

// Stores a partial line amount when scrolling, this is used to keep track of how much of a line
// is scrolled so we can "scroll" over partial lines and feel natural on touchpads. This is a
// quick fix and could have a more robust solution in place that reset the value when needed.
Expand Down Expand Up @@ -211,7 +213,12 @@ export class Viewport extends Disposable implements IViewport {

// Continue or finish smooth scroll
if (percent < 1) {
this._coreBrowserService.window.requestAnimationFrame(() => this._smoothScroll());
if (!this._smoothScrollAnimationFrame) {
this._smoothScrollAnimationFrame = this._coreBrowserService.window.requestAnimationFrame(() => {
this._smoothScrollAnimationFrame = 0;
this._smoothScroll();
});
}
} else {
this._clearSmoothScrollState();
}
Expand Down

0 comments on commit 21d7f78

Please sign in to comment.