From f83d2518a95280b08b8ab5f67d653fe737c7d73a Mon Sep 17 00:00:00 2001
From: Eric Amodio <eamodio@gmail.com>
Date: Wed, 29 Mar 2023 02:25:18 -0400
Subject: [PATCH] Closes Graph tab when switching to view layout

---
 src/container.ts | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/container.ts b/src/container.ts
index 96b00bd..345eca4 100644
--- a/src/container.ts
+++ b/src/container.ts
@@ -63,7 +63,7 @@ import { registerCommitDetailsWebviewView } from './webviews/commitDetails/regis
 import { registerHomeWebviewView } from './webviews/home/registration';
 import { RebaseEditorProvider } from './webviews/rebase/rebaseEditor';
 import { registerSettingsWebviewCommands, registerSettingsWebviewPanel } from './webviews/settings/registration';
-import type { WebviewViewProxy } from './webviews/webviewsController';
+import type { WebviewPanelProxy, WebviewViewProxy } from './webviews/webviewsController';
 import { WebviewsController } from './webviews/webviewsController';
 import { registerWelcomeWebviewPanel } from './webviews/welcome/registration';
 
@@ -213,9 +213,8 @@ export class Container {
 		context.subscriptions.unshift(registerTimelineWebviewPanel(this._webviews));
 		context.subscriptions.unshift((this._timelineView = registerTimelineWebviewView(this._webviews)));
 
-		const graphWebviewPanel = registerGraphWebviewPanel(this._webviews);
-		context.subscriptions.unshift(graphWebviewPanel);
-		context.subscriptions.unshift(registerGraphWebviewCommands(this, graphWebviewPanel));
+		context.subscriptions.unshift((this._graphPanel = registerGraphWebviewPanel(this._webviews)));
+		context.subscriptions.unshift(registerGraphWebviewCommands(this, this._graphPanel));
 		if (configuration.get('graph.experimental.location') === 'view') {
 			context.subscriptions.unshift((this._graphView = registerGraphWebviewView(this._webviews)));
 		}
@@ -309,6 +308,7 @@ export class Container {
 
 		if (configuration.changed(e, 'graph.experimental.location')) {
 			if (configuration.get('graph.experimental.location') === 'view') {
+				this._graphPanel?.close();
 				this._graphView = registerGraphWebviewView(this._webviews);
 			} else {
 				this._graphView?.dispose();
@@ -447,6 +447,7 @@ export class Container {
 		}
 	}
 
+	private readonly _graphPanel: WebviewPanelProxy;
 	private _graphView: WebviewViewProxy | undefined;
 	get graphView() {
 		if (this._graphView == null) {