From 3a62809febb538f229c640c6825c409e6d173a38 Mon Sep 17 00:00:00 2001 From: Ian Huff Date: Mon, 21 Sep 2020 16:04:15 -0700 Subject: [PATCH 1/2] make sure that we run our show code when a custom editor is shown --- news/2 Fixes/14016.md | 1 + .../datascience/notebookStorage/nativeEditorProvider.ts | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 news/2 Fixes/14016.md diff --git a/news/2 Fixes/14016.md b/news/2 Fixes/14016.md new file mode 100644 index 000000000000..022396ed2b00 --- /dev/null +++ b/news/2 Fixes/14016.md @@ -0,0 +1 @@ +Have Custom Editors load on editor show unless autostart is disabled. \ No newline at end of file diff --git a/src/client/datascience/notebookStorage/nativeEditorProvider.ts b/src/client/datascience/notebookStorage/nativeEditorProvider.ts index 23fcaa04da53..2e09a56f4557 100644 --- a/src/client/datascience/notebookStorage/nativeEditorProvider.ts +++ b/src/client/datascience/notebookStorage/nativeEditorProvider.ts @@ -276,8 +276,10 @@ export class NativeEditorProvider implements INotebookEditorProvider, CustomEdit // Get the model const model = await this.loadModel({ file: resource }); - // Load it (should already be visible) - return this.createNotebookEditor(model, panel); + // Load it + const resultEditor = this.createNotebookEditor(model, panel); + await resultEditor.show(); // Make sure we are shown and run our show code + return resultEditor; } catch (exc) { // Send telemetry indicating a failure sendTelemetryEvent(Telemetry.OpenNotebookFailure); From 6e5d4262cc1d4396b962a3bb74d98c47b6fb20c8 Mon Sep 17 00:00:00 2001 From: Ian Huff Date: Tue, 22 Sep 2020 10:39:35 -0700 Subject: [PATCH 2/2] Trigger notebook load in the constructor, not show --- .../interactive-common/interactiveBase.ts | 13 +++++-------- .../datascience/interactive-ipynb/nativeEditor.ts | 2 +- .../interactive-window/interactiveWindow.ts | 2 +- .../notebookStorage/nativeEditorProvider.ts | 4 +--- 4 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/client/datascience/interactive-common/interactiveBase.ts b/src/client/datascience/interactive-common/interactiveBase.ts index 5e0c1d11e16c..01b55deed731 100644 --- a/src/client/datascience/interactive-common/interactiveBase.ts +++ b/src/client/datascience/interactive-common/interactiveBase.ts @@ -216,14 +216,11 @@ export abstract class InteractiveBase extends WebviewPanelHost { - // Verify a server that matches us hasn't started already - this.createNotebookIfProviderConnectionExists().ignoreErrors(); - // Show our web panel. - return super.show(preserveFocus); + // If we have already auto started our server then we can go ahead and try to create a notebook on construction + setTimeout(() => { + this.createNotebookIfProviderConnectionExists().ignoreErrors(); + }, 0); } // tslint:disable-next-line: no-any no-empty cyclomatic-complexity max-func-body-length @@ -610,7 +607,7 @@ export abstract class InteractiveBase extends WebviewPanelHost { + public async show(preserveFocus: boolean = true): Promise { await this.loadPromise; return super.show(preserveFocus); } diff --git a/src/client/datascience/notebookStorage/nativeEditorProvider.ts b/src/client/datascience/notebookStorage/nativeEditorProvider.ts index 2e09a56f4557..f2015fd9eff0 100644 --- a/src/client/datascience/notebookStorage/nativeEditorProvider.ts +++ b/src/client/datascience/notebookStorage/nativeEditorProvider.ts @@ -277,9 +277,7 @@ export class NativeEditorProvider implements INotebookEditorProvider, CustomEdit const model = await this.loadModel({ file: resource }); // Load it - const resultEditor = this.createNotebookEditor(model, panel); - await resultEditor.show(); // Make sure we are shown and run our show code - return resultEditor; + return this.createNotebookEditor(model, panel); } catch (exc) { // Send telemetry indicating a failure sendTelemetryEvent(Telemetry.OpenNotebookFailure);