mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-24 18:49:00 +01:00
Make sure we clean up disposed webview
This commit is contained in:
@@ -136,30 +136,34 @@ export class ExtHostWebviews implements ExtHostWebviewsShape {
|
||||
|
||||
const webview = new ExtHostWebview(handle, this._proxy, uri, viewColumn, options);
|
||||
this._webviews.set(handle, webview);
|
||||
return this._webviews.get(handle);
|
||||
return webview;
|
||||
}
|
||||
|
||||
$onMessage(handle: WebviewHandle, message: any): void {
|
||||
const webview = this._webviews.get(handle);
|
||||
|
||||
webview.onMessageEmitter.fire(message);
|
||||
const webview = this.getWebview(handle);
|
||||
if (webview) {
|
||||
webview.onMessageEmitter.fire(message);
|
||||
}
|
||||
}
|
||||
|
||||
$onDidChangeActiveWeview(handle: WebviewHandle | undefined): void {
|
||||
const webview = this._webviews.get(handle);
|
||||
this._onDidChangeActiveWebview.fire(webview);
|
||||
const webview = this.getWebview(handle);
|
||||
if (webview) {
|
||||
this._onDidChangeActiveWebview.fire(webview);
|
||||
}
|
||||
}
|
||||
|
||||
$onDidDisposeWeview(handle: WebviewHandle): Thenable<void> {
|
||||
const webview = this._webviews.get(handle);
|
||||
const webview = this.getWebview(handle);
|
||||
if (webview) {
|
||||
webview.onDisposeEmitter.fire();
|
||||
this._webviews.delete(handle);
|
||||
}
|
||||
return Promise.resolve(void 0);
|
||||
}
|
||||
|
||||
$onDidChangePosition(handle: WebviewHandle, newPosition: Position): void {
|
||||
const webview = this._webviews.get(handle);
|
||||
const webview = this.getWebview(handle);
|
||||
if (webview) {
|
||||
const newViewColumn = typeConverters.toViewColumn(newPosition);
|
||||
if (webview.viewColumn !== newViewColumn) {
|
||||
@@ -171,4 +175,8 @@ export class ExtHostWebviews implements ExtHostWebviewsShape {
|
||||
|
||||
private readonly _onDidChangeActiveWebview = new Emitter<ExtHostWebview | undefined>();
|
||||
public readonly onDidChangeActiveWebview = this._onDidChangeActiveWebview.event;
|
||||
|
||||
private getWebview(handle: WebviewHandle) {
|
||||
return this._webviews.get(handle);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user