mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-10-02 17:38:12 +08:00
Exclude hidden layers from Ctrl+A selection; prevent G/R/S/nudging hidden layers (#1697)
* Exclude hidden layer to be selected on Select All Layer * Add hide layer action to history * Fix error call the function * Add hide layer action to history state * Make hidden layer cannot be transform like G/R/S and nudges --------- Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
co-authored by
Keavon Chambers
parent
e22db31738
commit
5bab38e173
@@ -460,7 +460,11 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
|
|||||||
match ipp.keyboard.key(resize) {
|
match ipp.keyboard.key(resize) {
|
||||||
// Nudge translation
|
// Nudge translation
|
||||||
false => {
|
false => {
|
||||||
for layer in self.selected_nodes.selected_layers(self.metadata()) {
|
for layer in self
|
||||||
|
.selected_nodes
|
||||||
|
.selected_layers(self.metadata())
|
||||||
|
.filter(|&layer| self.selected_nodes.layer_visible(layer, self.metadata()))
|
||||||
|
{
|
||||||
responses.add(GraphOperationMessage::TransformChange {
|
responses.add(GraphOperationMessage::TransformChange {
|
||||||
layer,
|
layer,
|
||||||
transform: DAffine2::from_translation(delta),
|
transform: DAffine2::from_translation(delta),
|
||||||
@@ -491,7 +495,11 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
|
|||||||
let pivot = DAffine2::from_translation(pivot);
|
let pivot = DAffine2::from_translation(pivot);
|
||||||
let transformation = pivot * scale * pivot.inverse();
|
let transformation = pivot * scale * pivot.inverse();
|
||||||
|
|
||||||
for layer in self.selected_nodes.selected_layers(self.metadata()) {
|
for layer in self
|
||||||
|
.selected_nodes
|
||||||
|
.selected_layers(self.metadata())
|
||||||
|
.filter(|&layer| self.selected_nodes.layer_visible(layer, self.metadata()))
|
||||||
|
{
|
||||||
let to = self.metadata().document_to_viewport.inverse() * self.metadata().downstream_transform_to_viewport(layer);
|
let to = self.metadata().document_to_viewport.inverse() * self.metadata().downstream_transform_to_viewport(layer);
|
||||||
let original_transform = self.metadata().upstream_transform(layer.to_node());
|
let original_transform = self.metadata().upstream_transform(layer.to_node());
|
||||||
let new = to.inverse() * transformation * to * original_transform;
|
let new = to.inverse() * transformation * to * original_transform;
|
||||||
@@ -614,8 +622,11 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
|
|||||||
}
|
}
|
||||||
DocumentMessage::SelectAllLayers => {
|
DocumentMessage::SelectAllLayers => {
|
||||||
let metadata = self.metadata();
|
let metadata = self.metadata();
|
||||||
let all_layers_except_artboards = metadata.all_layers().filter(move |&layer| !metadata.is_artboard(layer));
|
let all_layers_except_artboards_and_invisible = metadata
|
||||||
let nodes = all_layers_except_artboards.map(|layer| layer.to_node()).collect();
|
.all_layers()
|
||||||
|
.filter(move |&layer| !metadata.is_artboard(layer))
|
||||||
|
.filter(|&layer| self.selected_nodes.layer_visible(layer, metadata));
|
||||||
|
let nodes = all_layers_except_artboards_and_invisible.map(|layer| layer.to_node()).collect();
|
||||||
responses.add(NodeGraphMessage::SelectedNodesSet { nodes });
|
responses.add(NodeGraphMessage::SelectedNodesSet { nodes });
|
||||||
}
|
}
|
||||||
DocumentMessage::SelectedLayersLower => {
|
DocumentMessage::SelectedLayersLower => {
|
||||||
|
|||||||
@@ -459,6 +459,7 @@ impl<'a> MessageHandler<NodeGraphMessage, NodeGraphHandlerData<'a>> for NodeGrap
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
NodeGraphMessage::ToggleVisibility { node_id } => {
|
NodeGraphMessage::ToggleVisibility { node_id } => {
|
||||||
|
responses.add(DocumentMessage::StartTransaction);
|
||||||
let visible = document_metadata.node_is_visible(node_id);
|
let visible = document_metadata.node_is_visible(node_id);
|
||||||
let visible = !visible;
|
let visible = !visible;
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,11 @@ impl<'a> MessageHandler<TransformLayerMessage, TransformData<'a>> for TransformL
|
|||||||
fn process_message(&mut self, message: TransformLayerMessage, responses: &mut VecDeque<Message>, (document, input, tool_data, shape_editor): TransformData) {
|
fn process_message(&mut self, message: TransformLayerMessage, responses: &mut VecDeque<Message>, (document, input, tool_data, shape_editor): TransformData) {
|
||||||
let using_path_tool = tool_data.active_tool_type == ToolType::Path;
|
let using_path_tool = tool_data.active_tool_type == ToolType::Path;
|
||||||
|
|
||||||
let selected_layers = document.selected_nodes.selected_layers(document.metadata()).collect::<Vec<_>>();
|
let selected_layers = document
|
||||||
|
.selected_nodes
|
||||||
|
.selected_layers(document.metadata())
|
||||||
|
.filter(|&layer| document.metadata().node_is_visible(layer.to_node()))
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
let mut selected = Selected::new(
|
let mut selected = Selected::new(
|
||||||
&mut self.original_transforms,
|
&mut self.original_transforms,
|
||||||
|
|||||||
Reference in New Issue
Block a user