From ba7f67ae861fe6b6a95e7db6e7ff09fbe75b3e0b Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Mon, 27 Aug 2018 21:19:01 -0700 Subject: [PATCH] Settings editor - lazier paging when scrolling, looks nicer --- .../workbench/parts/preferences/browser/settingsEditor2.ts | 2 +- src/vs/workbench/parts/preferences/browser/settingsTree.ts | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts b/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts index 43e7d9363f7..b7e75a2bcf0 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 196d1b81b81..44f2fd26cf5 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 { -- GitLab