From 421e7c025fa969768d53f0a2fbffa0144c57d531 Mon Sep 17 00:00:00 2001 From: 0HyperCube <78500760+0HyperCube@users.noreply.github.com> Date: Mon, 11 Dec 2023 21:46:08 +0000 Subject: [PATCH] Fix deleting all artboards without crashing (#1502) * Fix delete all artboards * Remove unused import causing warning --------- Co-authored-by: Keavon Chambers --- .../node_graph/graph_operation_message_handler.rs | 8 +++++--- .../portfolio/menu_bar/menu_bar_message_handler.rs | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/editor/src/messages/portfolio/document/node_graph/graph_operation_message_handler.rs b/editor/src/messages/portfolio/document/node_graph/graph_operation_message_handler.rs index 904b86ca..5f650669 100644 --- a/editor/src/messages/portfolio/document/node_graph/graph_operation_message_handler.rs +++ b/editor/src/messages/portfolio/document/node_graph/graph_operation_message_handler.rs @@ -713,9 +713,11 @@ impl MessageHandler { let mut modify_inputs = ModifyInputsContext::new(document, node_graph, responses); - let artboard_nodes = modify_inputs.network.nodes.iter().filter(|(_, node)| node.name == "Artboard").map(|(id, _)| *id).collect::>(); - for id in artboard_nodes { - modify_inputs.delete_layer(id); + let layer_nodes = modify_inputs.network.nodes.iter().filter(|(_, node)| node.is_layer()).map(|(id, _)| *id).collect::>(); + for layer in layer_nodes { + if modify_inputs.network.upstream_flow_back_from_nodes(vec![layer], true).any(|(node, _id)| node.name == "Artboard") { + modify_inputs.delete_layer(layer); + } } document.load_network_structure(); } diff --git a/editor/src/messages/portfolio/menu_bar/menu_bar_message_handler.rs b/editor/src/messages/portfolio/menu_bar/menu_bar_message_handler.rs index 11135b1c..a79eb9e8 100644 --- a/editor/src/messages/portfolio/menu_bar/menu_bar_message_handler.rs +++ b/editor/src/messages/portfolio/menu_bar/menu_bar_message_handler.rs @@ -254,7 +254,7 @@ impl LayoutHolder for MenuBarMessageHandler { no_active_document, MenuBarEntryChildren(vec![vec![MenuBarEntry { label: "Clear Artboards".into(), - action: MenuBarEntry::create_action(|_| DialogMessage::RequestComingSoonDialog { issue: None }.into()), + action: MenuBarEntry::create_action(|_| GraphOperationMessage::ClearArtboards.into()), disabled: no_active_document, ..MenuBarEntry::default() }]]),