From b854a5a1d3791a0de86fdf6ae628022628fa4165 Mon Sep 17 00:00:00 2001 From: haikalvidya Date: Thu, 28 Mar 2024 12:03:37 +0700 Subject: [PATCH] Make the locked layer cannot be selected using pointer and select all key --- .../portfolio/document/document_message_handler.rs | 9 +++++++-- .../document/node_graph/node_graph_message_handler.rs | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/editor/src/messages/portfolio/document/document_message_handler.rs b/editor/src/messages/portfolio/document/document_message_handler.rs index de705a3f02..6411e6b196 100644 --- a/editor/src/messages/portfolio/document/document_message_handler.rs +++ b/editor/src/messages/portfolio/document/document_message_handler.rs @@ -614,8 +614,11 @@ impl MessageHandler> for DocumentMessag } DocumentMessage::SelectAllLayers => { let metadata = self.metadata(); - let all_layers_except_artboards = metadata.all_layers().filter(move |&layer| !metadata.is_artboard(layer)); - let nodes = all_layers_except_artboards.map(|layer| layer.to_node()).collect(); + let all_layers_except_artboards_locked = metadata + .all_layers() + .filter(move |&layer| !metadata.is_artboard(layer)) + .filter(|&layer| !self.selected_nodes.layer_locked(layer, metadata)); + let nodes = all_layers_except_artboards_locked.map(|layer| layer.to_node()).collect(); responses.add(NodeGraphMessage::SelectedNodesSet { nodes }); } DocumentMessage::SelectedLayersLower => { @@ -823,6 +826,7 @@ impl DocumentMessageHandler { .root() .descendants(&self.metadata) .filter(|&layer| self.selected_nodes.layer_visible(layer, self.metadata())) + .filter(|&layer| !self.selected_nodes.layer_locked(layer, self.metadata())) .filter(|&layer| !is_artboard(layer, network)) .filter_map(|layer| self.metadata.click_target(layer).map(|targets| (layer, targets))) .filter(move |(layer, target)| target.iter().any(move |target| target.intersect_rectangle(document_quad, self.metadata.transform_to_document(*layer)))) @@ -836,6 +840,7 @@ impl DocumentMessageHandler { .root() .descendants(&self.metadata) .filter(|&layer| self.selected_nodes.layer_visible(layer, self.metadata())) + .filter(|&layer| !self.selected_nodes.layer_locked(layer, self.metadata())) .filter_map(|layer| self.metadata.click_target(layer).map(|targets| (layer, targets))) .filter(move |(layer, target)| target.iter().any(|target: &ClickTarget| target.intersect_point(point, self.metadata.transform_to_document(*layer)))) .map(|(layer, _)| layer) diff --git a/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler.rs b/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler.rs index 5efc67cd5d..334dabe56d 100644 --- a/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler.rs +++ b/editor/src/messages/portfolio/document/node_graph/node_graph_message_handler.rs @@ -596,7 +596,7 @@ impl NodeGraphMessageHandler { }); } - /// Updates the buttons for visibility and preview + /// Updates the buttons for visibility, locked, and preview fn update_selection_action_buttons(&mut self, document_network: &NodeNetwork, document_metadata: &DocumentMetadata, selected_nodes: &SelectedNodes, responses: &mut VecDeque) { if let Some(network) = document_network.nested_network(&self.network) { let mut widgets = Vec::new();