From bd36b7d6a3ef41ef7b5a3cbcd01dbd859ed70a50 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 8 Mar 2022 18:08:47 -0800 Subject: [PATCH] Make sure we set html on markdown preview when it is not visible Fixes #138630 If the webview does not exist, we need to update the html on it instead of posting a message to it. This makes sure the correct content is shown when the webview is created again This also removes a previous workaround for this issue that I no longer believe is required --- .../src/features/preview.ts | 27 +------------------ 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/extensions/markdown-language-features/src/features/preview.ts b/extensions/markdown-language-features/src/features/preview.ts index 371cc64899d..3b3f1fe6c8c 100644 --- a/extensions/markdown-language-features/src/features/preview.ts +++ b/extensions/markdown-language-features/src/features/preview.ts @@ -179,31 +179,6 @@ class MarkdownPreview extends Disposable implements WebviewResourceProvider { } })); - this._register(this._webviewPanel.onDidChangeViewState(async () => { - if (this._disposed) { - return; - } - - if (this._webviewPanel.active) { - let document: vscode.TextDocument; - try { - document = await vscode.workspace.openTextDocument(this._resource); - } catch { - return; - } - - if (this._disposed) { - return; - } - - const content = await this._contentProvider.provideTextDocumentContent(document, this, this._previewConfigurations, this.line, this.state); - if (!this._webviewPanel.active && !this._disposed) { - // Update the html so we can show it properly when restoring it - this._webviewPanel.webview.html = content.html; - } - } - })); - this._register(this._webviewPanel.webview.onDidReceiveMessage((e: CacheImageSizesMessage | RevealLineMessage | DidClickMessage | ClickLinkMessage | ShowPreviewSecuritySelectorMessage | PreviewStyleLoadErrorMessage) => { if (e.source !== this._resource.toString()) { return; @@ -343,7 +318,7 @@ class MarkdownPreview extends Disposable implements WebviewResourceProvider { return; } - const shouldReloadPage = forceUpdate || !this.currentVersion || this.currentVersion.resource.toString() !== pendingVersion.resource.toString(); + const shouldReloadPage = forceUpdate || !this.currentVersion || this.currentVersion.resource.toString() !== pendingVersion.resource.toString() || !this._webviewPanel.visible; this.currentVersion = pendingVersion; const content = await (shouldReloadPage