From 13d2ec566661cfb4ee3c8cfe2e4e5664cf24d596 Mon Sep 17 00:00:00 2001 From: Akos Kitta Date: Mon, 28 Nov 2022 09:52:28 +0100 Subject: [PATCH] fix: remote sketch creation if tree is not active Closes #1715 Signed-off-by: Akos Kitta --- .../browser/contributions/new-cloud-sketch.ts | 11 ++++++----- .../widgets/sketchbook/sketchbook-widget.tsx | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/arduino-ide-extension/src/browser/contributions/new-cloud-sketch.ts b/arduino-ide-extension/src/browser/contributions/new-cloud-sketch.ts index c61852ca5..430821c03 100644 --- a/arduino-ide-extension/src/browser/contributions/new-cloud-sketch.ts +++ b/arduino-ide-extension/src/browser/contributions/new-cloud-sketch.ts @@ -202,11 +202,12 @@ export class NewCloudSketch extends Contribution { private treeModelFrom( widget: SketchbookWidget ): CloudSketchbookTreeModel | undefined { - const treeWidget = widget.getTreeWidget(); - if (treeWidget instanceof CloudSketchbookTreeWidget) { - const model = treeWidget.model; - if (model instanceof CloudSketchbookTreeModel) { - return model; + for (const treeWidget of widget.getTreeWidgets()) { + if (treeWidget instanceof CloudSketchbookTreeWidget) { + const model = treeWidget.model; + if (model instanceof CloudSketchbookTreeModel) { + return model; + } } } return undefined; diff --git a/arduino-ide-extension/src/browser/widgets/sketchbook/sketchbook-widget.tsx b/arduino-ide-extension/src/browser/widgets/sketchbook/sketchbook-widget.tsx index eb0059590..93533e37e 100644 --- a/arduino-ide-extension/src/browser/widgets/sketchbook/sketchbook-widget.tsx +++ b/arduino-ide-extension/src/browser/widgets/sketchbook/sketchbook-widget.tsx @@ -53,10 +53,28 @@ export class SketchbookWidget extends BaseWidget { ); } + /** + * The currently selected sketchbook tree widget inside the view. + */ getTreeWidget(): SketchbookTreeWidget { return this.sketchbookCompositeWidget.treeWidget; } + /** + * An array of all sketchbook tree widgets managed by the view. + */ + getTreeWidgets(): SketchbookTreeWidget[] { + return toArray(this.sketchbookTreesContainer.widgets()).reduce( + (acc, curr) => { + if (curr instanceof BaseSketchbookCompositeWidget) { + acc.push(curr.treeWidget); + } + return acc; + }, + [] as SketchbookTreeWidget[] + ); + } + activeTreeWidgetId(): string | undefined { const selectedTreeWidgets = toArray( this.sketchbookTreesContainer.selectedWidgets()