Make locked layer cannot be moved and disable bounding box

This commit is contained in:
haikalvidya
2024-03-29 17:31:00 +07:00
parent b854a5a1d3
commit f193beb5da
2 changed files with 6 additions and 5 deletions

View File

@@ -69,8 +69,9 @@ impl SelectedNodes {
layer.ancestors(metadata).any(|layer| metadata.node_is_locked(layer.to_node()))
}
pub fn selected_locked_layers<'a>(&'a self, metadata: &'a DocumentMetadata) -> impl Iterator<Item = LayerNodeIdentifier> + '_ {
self.selected_layers(metadata).filter(move |&layer| self.layer_locked(layer, metadata))
pub fn selected_visible_and_unlocked_layers<'a>(&'a self, metadata: &'a DocumentMetadata) -> impl Iterator<Item = LayerNodeIdentifier> + '_ {
self.selected_layers(metadata)
.filter(move |&layer| self.layer_visible(layer, metadata) && !self.layer_locked(layer, metadata))
}
pub fn selected_layers<'a>(&'a self, metadata: &'a DocumentMetadata) -> impl Iterator<Item = LayerNodeIdentifier> + '_ {

View File

@@ -391,7 +391,7 @@ impl Fsm for SelectToolFsmState {
tool_data.selected_layers_count = selected_layers_count;
// Outline selected layers
for layer in document.selected_nodes.selected_visible_layers(document.metadata()) {
for layer in document.selected_nodes.selected_visible_and_unlocked_layers(document.metadata()) {
overlay_context.outline(document.metadata().layer_outline(layer), document.metadata().transform_to_viewport(layer));
}
@@ -405,13 +405,13 @@ impl Fsm for SelectToolFsmState {
// Update bounds
let transform = document
.selected_nodes
.selected_visible_layers(document.metadata())
.selected_visible_and_unlocked_layers(document.metadata())
.next()
.map(|layer| document.metadata().transform_to_viewport(layer));
let transform = transform.unwrap_or(DAffine2::IDENTITY);
let bounds = document
.selected_nodes
.selected_visible_layers(document.metadata())
.selected_visible_and_unlocked_layers(document.metadata())
.filter_map(|layer| {
document
.metadata()