From f2390e6b8a0f01c5f4e5092d45a0e036aa07e25b Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Thu, 1 Feb 2018 22:07:38 +0100 Subject: [PATCH] #42741 Separate local search from remote search --- .../preferences/browser/preferencesEditor.ts | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/vs/workbench/parts/preferences/browser/preferencesEditor.ts b/src/vs/workbench/parts/preferences/browser/preferencesEditor.ts index dfe598050dd..9b0c1420b81 100644 --- a/src/vs/workbench/parts/preferences/browser/preferencesEditor.ts +++ b/src/vs/workbench/parts/preferences/browser/preferencesEditor.ts @@ -113,6 +113,7 @@ export class PreferencesEditor extends BaseEditor { private preferencesRenderers: PreferencesRenderersController; private delayedFilterLogging: Delayer; + private localSearchDelayer: Delayer; private remoteSearchThrottle: ThrottledDelayer; private _lastReportedFilter: string; @@ -131,6 +132,7 @@ export class PreferencesEditor extends BaseEditor { this.defaultSettingsEditorContextKey = CONTEXT_SETTINGS_EDITOR.bindTo(this.contextKeyService); this.focusSettingsContextKey = CONTEXT_SETTINGS_SEARCH_FOCUS.bindTo(this.contextKeyService); this.delayedFilterLogging = new Delayer(1000); + this.localSearchDelayer = new Delayer(100); this.remoteSearchThrottle = new ThrottledDelayer(200); } @@ -247,7 +249,7 @@ export class PreferencesEditor extends BaseEditor { private onInputChanged(): void { const query = this.searchWidget.getValue().trim(); this.delayedFilterLogging.cancel(); - this.triggerThrottledSearch(query) + this.triggerSearch(query) .then(() => { const result = this.preferencesRenderers.lastFilterResult; if (result) { @@ -259,15 +261,17 @@ export class PreferencesEditor extends BaseEditor { }); } - private triggerThrottledSearch(query: string): TPromise { + private triggerSearch(query: string): TPromise { if (query) { - return this.remoteSearchThrottle.trigger(() => { - this.preferencesRenderers.localFilterPreferences(query); - return this.progressService.showWhile(this.preferencesRenderers.remoteSearchPreferences(query), 500); - }); + return TPromise.join([ + this.localSearchDelayer.trigger(() => this.preferencesRenderers.localFilterPreferences(query)), + this.remoteSearchThrottle.trigger(() => this.progressService.showWhile(this.preferencesRenderers.remoteSearchPreferences(query), 500)) + ]) as TPromise; } else { - this.preferencesRenderers.localFilterPreferences(query); // When clearing the input, update immediately to clear it + this.localSearchDelayer.cancel(); + this.preferencesRenderers.localFilterPreferences(query); + this.remoteSearchThrottle.cancel(); return this.preferencesRenderers.remoteSearchPreferences(query); }