Make the locked layer cannot be selected using pointer and select all key

This commit is contained in:
haikalvidya
2024-03-28 12:03:37 +07:00
parent 601e45e1f3
commit b854a5a1d3
2 changed files with 8 additions and 3 deletions

View File

@@ -614,8 +614,11 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> 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)

View File

@@ -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<Message>) {
if let Some(network) = document_network.nested_network(&self.network) {
let mut widgets = Vec::new();