From ec9ff75485b8c97775502ee8088f6fa9d43ce37f Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 17 Aug 2016 16:10:28 +0200 Subject: [PATCH] sugest widegt only knows about view model, not data model --- .../suggest/browser/suggestController.ts | 9 +++-- .../contrib/suggest/browser/suggestWidget.ts | 35 ++++++++----------- 2 files changed, 18 insertions(+), 26 deletions(-) diff --git a/src/vs/editor/contrib/suggest/browser/suggestController.ts b/src/vs/editor/contrib/suggest/browser/suggestController.ts index 684c8a3ccb6..f9733009bf5 100644 --- a/src/vs/editor/contrib/suggest/browser/suggestController.ts +++ b/src/vs/editor/contrib/suggest/browser/suggestController.ts @@ -28,7 +28,6 @@ export class SuggestController implements IEditorContribution { private model: SuggestModel; private widget: SuggestWidget; - private toDispose: IDisposable[] = []; constructor( @@ -36,9 +35,9 @@ export class SuggestController implements IEditorContribution { @IInstantiationService instantiationService: IInstantiationService ) { this.model = new SuggestModel(this.editor); - this.toDispose.push(this.model.onDidTrigger(e => this.widget.showTriggered(e))); - this.toDispose.push(this.model.onDidSuggest(e => this.widget.showSuggestions(e))); - this.toDispose.push(this.model.onDidCancel(e => this.widget.showDidCancel(e))); + this.toDispose.push(this.model.onDidTrigger(e => this.widget.showTriggered(e.auto))); + this.toDispose.push(this.model.onDidSuggest(e => this.widget.showSuggestions(e.completionModel, e.isFrozen, e.auto))); + this.toDispose.push(this.model.onDidCancel(e => !e.retrigger && this.widget.hideWidget())); this.widget = instantiationService.createInstance(SuggestWidget, this.editor); this.toDispose.push(this.widget.onDidSelect(this.onDidSelectItem, this)); @@ -87,7 +86,7 @@ export class SuggestController implements IEditorContribution { cancelSuggestWidget(): void { if (this.widget) { - this.widget.cancel(); + this.widget.hideDetailsOrHideWidget(); } } diff --git a/src/vs/editor/contrib/suggest/browser/suggestWidget.ts b/src/vs/editor/contrib/suggest/browser/suggestWidget.ts index 160c19db7ae..750989c197d 100644 --- a/src/vs/editor/contrib/suggest/browser/suggestWidget.ts +++ b/src/vs/editor/contrib/suggest/browser/suggestWidget.ts @@ -24,7 +24,6 @@ import { IConfigurationChangedEvent } from 'vs/editor/common/editorCommon'; import { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition } from 'vs/editor/browser/editorBrowser'; import { Context as SuggestContext } from '../common/suggest'; import { CompletionItem, CompletionModel } from '../common/completionModel'; -import { ICancelEvent, ISuggestEvent, ITriggerEvent } from '../common/suggestModel'; import { alert } from 'vs/base/browser/ui/aria/aria'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; @@ -532,12 +531,12 @@ export class SuggestWidget implements IContentWidget, IDisposable { return this.onDidSelectEmitter.event; } - showTriggered(e: ITriggerEvent) { + showTriggered(auto: boolean) { if (this.state !== State.Hidden) { return; } - this.isAuto = !!e.auto; + this.isAuto = !!auto; if (!this.isAuto) { this.loadingTimeout = setTimeout(() => { @@ -547,15 +546,15 @@ export class SuggestWidget implements IContentWidget, IDisposable { } } - showSuggestions(e: ISuggestEvent): void { + showSuggestions(completionModel: CompletionModel, isFrozen: boolean, isAuto: boolean): void { if (this.loadingTimeout) { clearTimeout(this.loadingTimeout); this.loadingTimeout = null; } - this.completionModel = e.completionModel; + this.completionModel = completionModel; - if (e.isFrozen && this.state !== State.Empty) { + if (isFrozen && this.state !== State.Empty) { this.setState(State.Frozen); return; } @@ -566,7 +565,7 @@ export class SuggestWidget implements IContentWidget, IDisposable { this.suggestWidgetMultipleSuggestions.set(visibleCount > 1); if (isEmpty) { - if (e.auto) { + if (isAuto) { this.setState(State.Hidden); } else { this.setState(State.Empty); @@ -595,22 +594,11 @@ export class SuggestWidget implements IContentWidget, IDisposable { suggestionCount: visibleCount, snippetCount, textCount, - wasAutomaticallyTriggered: !!e.auto + wasAutomaticallyTriggered: !!isAuto }); } } - showDidCancel(e: ICancelEvent) { - if (this.loadingTimeout) { - clearTimeout(this.loadingTimeout); - this.loadingTimeout = null; - } - - if (!e.retrigger) { - this.setState(State.Hidden); - } - } - selectNextPage(): boolean { switch (this.state) { case State.Hidden: @@ -715,11 +703,16 @@ export class SuggestWidget implements IContentWidget, IDisposable { removeClass(this.element, 'visible'); } - cancel(): void { + hideWidget(): void { + clearTimeout(this.loadingTimeout); + this.setState(State.Hidden); + } + + hideDetailsOrHideWidget(): void { if (this.state === State.Details) { this.toggleDetails(); } else { - this.showDidCancel({ retrigger: false }); + this.hideWidget(); } } -- GitLab