diff --git a/src/vs/workbench/browser/workbench.ts b/src/vs/workbench/browser/workbench.ts index 0bfabd47d96..d4892647c97 100644 --- a/src/vs/workbench/browser/workbench.ts +++ b/src/vs/workbench/browser/workbench.ts @@ -338,6 +338,8 @@ export class Workbench implements IPartService { this.quickOpen = this.instantiationService.createInstance(QuickOpenController); this.toDispose.push(this.quickOpen); this.toShutdown.push(this.quickOpen); + this.toDispose.push(this.quickOpen.onShow(() => (this.messageService).suspend())); // when quick open is open, don't show messages behind + this.toDispose.push(this.quickOpen.onHide(() => (this.messageService).resume())); // resume messages once quick open is closed again serviceCollection.set(IQuickOpenService, this.quickOpen); // Status bar @@ -360,7 +362,7 @@ export class Workbench implements IPartService { (this.threadService).setInstantiationService(this.instantiationService); } if (this.messageService instanceof WorkbenchMessageService) { - (this.messageService).setWorkbenchServices(this.quickOpen, this.statusbarPart); + (this.messageService).setWorkbenchServices(this.statusbarPart); } (this.untitledEditorService).setInstantiationService(this.instantiationService); @@ -651,7 +653,7 @@ export class Workbench implements IPartService { private toDisposable(fn: () => void): IDisposable { return { - dispose: function() { + dispose: function () { fn(); } }; diff --git a/src/vs/workbench/services/message/browser/messageService.ts b/src/vs/workbench/services/message/browser/messageService.ts index 39a66a50d70..37faab197aa 100644 --- a/src/vs/workbench/services/message/browser/messageService.ts +++ b/src/vs/workbench/services/message/browser/messageService.ts @@ -12,7 +12,6 @@ import {StatusbarAlignment} from 'vs/workbench/browser/parts/statusbar/statusbar import {IDisposable} from 'vs/base/common/lifecycle'; import {IMessageService, IMessageWithAction, IConfirmation, Severity} from 'vs/platform/message/common/message'; import {ITelemetryService} from 'vs/platform/telemetry/common/telemetry'; -import {IQuickOpenService} from 'vs/workbench/services/quickopen/common/quickOpenService'; import {IStatusbarService} from 'vs/workbench/services/statusbar/common/statusbarService'; import Event from 'vs/base/common/event'; @@ -33,7 +32,6 @@ export class WorkbenchMessageService implements IMessageService { private canShowMessages: boolean; private messageBuffer: IBufferedMessage[]; - private quickOpenService: IQuickOpenService; private statusbarService: IStatusbarService; constructor( @@ -46,12 +44,8 @@ export class WorkbenchMessageService implements IMessageService { this.disposeables = []; } - public setWorkbenchServices(quickOpenService: IQuickOpenService, statusbarService: IStatusbarService): void { + public setWorkbenchServices(statusbarService: IStatusbarService): void { this.statusbarService = statusbarService; - this.quickOpenService = quickOpenService; - - this.disposeables.push(this.quickOpenService.onShow(this.onQuickOpenShowing, this)); - this.disposeables.push(this.quickOpenService.onHide(this.onQuickOpenHiding, this)); } public get onMessagesShowing(): Event { @@ -62,14 +56,14 @@ export class WorkbenchMessageService implements IMessageService { return this.handler.onMessagesCleared; } - private onQuickOpenShowing(): void { - this.canShowMessages = false; // when quick open is open, don't show messages behind - this.handler.hide(); // hide messages when quick open is visible + public suspend(): void { + this.canShowMessages = false; + this.handler.hide(); } - private onQuickOpenHiding(): void { + public resume(): void { this.canShowMessages = true; - this.handler.show(); // make sure the handler is visible + this.handler.show(); // Release messages from buffer while (this.messageBuffer.length) {