From 3acf6e6bd16c4d2ebe5e6b5ea72340e46cd7ff77 Mon Sep 17 00:00:00 2001 From: Raymond Zhao Date: Tue, 22 Feb 2022 12:28:34 -0800 Subject: [PATCH] Add debounce, fixes #141680 --- .../workbench/contrib/preferences/browser/settingsEditor2.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts b/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts index 45a1643e6b0..4cb15aa65c4 100644 --- a/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts +++ b/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts @@ -89,6 +89,7 @@ export class SettingsEditor2 extends EditorPane { static readonly ID: string = 'workbench.editor.settings2'; private static NUM_INSTANCES: number = 0; + private static SEARCH_DEBOUNCE: number = 200; private static SETTING_UPDATE_FAST_DEBOUNCE: number = 200; private static SETTING_UPDATE_SLOW_DEBOUNCE: number = 1000; private static CONFIG_SCHEMA_UPDATE_DELAYER = 500; @@ -167,6 +168,7 @@ export class SettingsEditor2 extends EditorPane { private remoteSearchThrottle: ThrottledDelayer; private searchInProgress: CancellationTokenSource | null = null; + private searchInputDelayer: Delayer; private updatedConfigSchemaDelayer: Delayer; private settingFastUpdateDelayer: Delayer; @@ -223,6 +225,7 @@ export class SettingsEditor2 extends EditorPane { this.settingFastUpdateDelayer = new Delayer(SettingsEditor2.SETTING_UPDATE_FAST_DEBOUNCE); this.settingSlowUpdateDelayer = new Delayer(SettingsEditor2.SETTING_UPDATE_SLOW_DEBOUNCE); + this.searchInputDelayer = new Delayer(SettingsEditor2.SEARCH_DEBOUNCE); this.updatedConfigSchemaDelayer = new Delayer(SettingsEditor2.CONFIG_SCHEMA_UPDATE_DELAYER); this.inSettingsEditorContextKey = CONTEXT_SETTINGS_EDITOR.bindTo(contextKeyService); @@ -557,7 +560,7 @@ export class SettingsEditor2 extends EditorPane { this._register(this.searchWidget.onInputDidChange(() => { const searchVal = this.searchWidget.getValue(); clearInputAction.enabled = !!searchVal; - this.onSearchInputChanged(); + this.searchInputDelayer.trigger(() => this.onSearchInputChanged()); })); const headerControlsContainer = DOM.append(this.headerContainer, $('.settings-header-controls'));