From b60267b17c46b309338a8e110296dc17a56f32e2 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Wed, 28 Feb 2018 00:10:35 -0800 Subject: [PATCH] Delete webview input on dispose --- src/vs/workbench/api/electron-browser/mainThreadWebview.ts | 7 ++++++- src/vs/workbench/api/node/extHost.protocol.ts | 2 +- src/vs/workbench/api/node/extHostWebview.ts | 3 ++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts index 68c7e83ae90..71606a9b7d6 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts @@ -328,6 +328,7 @@ class WebviewEditor extends BaseWebviewEditor { this.webviewContent.style.visibility = 'hidden'; } } + super.setEditorVisible(visible, position); } @@ -448,7 +449,11 @@ export class MainThreadWebviews implements MainThreadWebviewsShape { const webviewInput = WebviewInput.create(URI.revive(uri), title, column, options, '', { onMessage: message => this._proxy.$onMessage(handle, message), onDidChangePosition: position => this._proxy.$onDidChangePosition(handle, position), - onDispose: () => this._proxy.$onDidDisposeWeview(handle), + onDispose: () => { + this._proxy.$onDidDisposeWeview(handle).then(() => { + this._webviews.delete(handle); + }); + }, onDidClickLink: (link, options) => this.onDidClickLink(link, options) }, this._partService); diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index a07f469b763..36169ce35e8 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -355,7 +355,7 @@ export interface MainThreadWebviewsShape extends IDisposable { export interface ExtHostWebviewsShape { $onMessage(handle: WebviewHandle, message: any): void; $onDidChangeActiveWeview(handle: WebviewHandle | undefined): void; - $onDidDisposeWeview(handle: WebviewHandle): void; + $onDidDisposeWeview(handle: WebviewHandle): Thenable; $onDidChangePosition(handle: WebviewHandle, newPosition: EditorPosition): void; } diff --git a/src/vs/workbench/api/node/extHostWebview.ts b/src/vs/workbench/api/node/extHostWebview.ts index 03b0917d446..39e95ef26f8 100644 --- a/src/vs/workbench/api/node/extHostWebview.ts +++ b/src/vs/workbench/api/node/extHostWebview.ts @@ -150,11 +150,12 @@ export class ExtHostWebviews implements ExtHostWebviewsShape { this._onDidChangeActiveWebview.fire(webview); } - $onDidDisposeWeview(handle: WebviewHandle): void { + $onDidDisposeWeview(handle: WebviewHandle): Thenable { const webview = this._webviews.get(handle); if (webview) { webview.onDisposeEmitter.fire(); } + return Promise.resolve(void 0); } $onDidChangePosition(handle: WebviewHandle, newPosition: Position): void { -- GitLab