diff --git a/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts b/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts index 43e7d9363f706178a8082eb54d8886defe3a5c1d..b7e75a2bcf01f307507885df90162129cb7d6333 100644 --- a/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts +++ b/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts @@ -556,7 +556,7 @@ export class SettingsEditor2 extends BaseEditor { private updateTreePagingByScroll(): void { const lastVisibleElement = this.settingsTree.getLastVisibleElement(); - if (lastVisibleElement && this.settingsTreeDataSource.pageTo(lastVisibleElement.index)) { + if (lastVisibleElement && this.settingsTreeDataSource.pageTo(lastVisibleElement.index, false)) { this.renderTree(); } } diff --git a/src/vs/workbench/parts/preferences/browser/settingsTree.ts b/src/vs/workbench/parts/preferences/browser/settingsTree.ts index 196d1b81b81b0ce631296e4b46e44c115f708200..44f2fd26cf50fbbb68e46b0a36dfeca24e049401 100644 --- a/src/vs/workbench/parts/preferences/browser/settingsTree.ts +++ b/src/vs/workbench/parts/preferences/browser/settingsTree.ts @@ -208,6 +208,7 @@ export class SettingsDataSource implements IDataSource { export class SimplePagedDataSource implements IDataSource { private static readonly SETTINGS_PER_PAGE = 30; + private static readonly BUFFER = 5; private loadedToIndex: number; @@ -215,8 +216,10 @@ export class SimplePagedDataSource implements IDataSource { this.loadedToIndex = SimplePagedDataSource.SETTINGS_PER_PAGE * 2; } - pageTo(index: number): boolean { - if (index > this.loadedToIndex - SimplePagedDataSource.SETTINGS_PER_PAGE) { + pageTo(index: number, top = true): boolean { + const buffer = top ? SimplePagedDataSource.SETTINGS_PER_PAGE : SimplePagedDataSource.BUFFER; + + if (index > this.loadedToIndex - buffer) { this.loadedToIndex = (Math.ceil(index / SimplePagedDataSource.SETTINGS_PER_PAGE) + 1) * SimplePagedDataSource.SETTINGS_PER_PAGE; return true; } else {