diff --git a/src/MarkwhenTimelineEditorProvider.ts b/src/MarkwhenTimelineEditorProvider.ts index f173ebb..5250816 100644 --- a/src/MarkwhenTimelineEditorProvider.ts +++ b/src/MarkwhenTimelineEditorProvider.ts @@ -16,7 +16,15 @@ import { DisplayScale } from "./utilities/dateTimeUtilities"; export let webviewPanels = [] as vscode.WebviewPanel[]; const getPanel = () => { - return webviewPanels[webviewPanels.length - 1]; + const validPanels = webviewPanels.filter(panel => { + try { + panel.webview.postMessage({}); + return true; + } catch { + return false; + } + }); + return validPanels[validPanels.length - 1]; }; export class MarkwhenTimelineEditorProvider @@ -252,8 +260,9 @@ export class MarkwhenTimelineEditorProvider } }; - getPanel().onDidDispose(() => { + webviewPanel.onDidDispose(() => { changeDocumentSubscription.dispose(); + webviewPanels = webviewPanels.filter(panel => panel !== webviewPanel); }); this.updateWebview();