mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2025-08-04 05:18:19 +00:00
Add recursive folder expand/collapse to the Layers panel (#2419)
* added_recursion_fix * Add tooltip and tidy up color visibility --------- Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
parent
7a3bb999a9
commit
d2fc919ba6
5 changed files with 36 additions and 13 deletions
|
@ -171,6 +171,7 @@ pub enum DocumentMessage {
|
|||
AddTransaction,
|
||||
ToggleLayerExpansion {
|
||||
id: NodeId,
|
||||
recursive: bool,
|
||||
},
|
||||
ToggleSelectedVisibility,
|
||||
ToggleSelectedLocked,
|
||||
|
|
|
@ -1192,13 +1192,27 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
|
|||
responses.add_front(DocumentMessage::CommitTransaction);
|
||||
responses.add_front(DocumentMessage::StartTransaction);
|
||||
}
|
||||
DocumentMessage::ToggleLayerExpansion { id } => {
|
||||
DocumentMessage::ToggleLayerExpansion { id, recursive } => {
|
||||
let layer = LayerNodeIdentifier::new(id, &self.network_interface, &[]);
|
||||
if self.collapsed.0.contains(&layer) {
|
||||
self.collapsed.0.retain(|&collapsed_layer| collapsed_layer != layer);
|
||||
let metadata = self.metadata();
|
||||
|
||||
let is_collapsed = self.collapsed.0.contains(&layer);
|
||||
|
||||
if is_collapsed {
|
||||
if recursive {
|
||||
let children: HashSet<_> = layer.children(metadata).collect();
|
||||
self.collapsed.0.retain(|collapsed_layer| !children.contains(collapsed_layer) && collapsed_layer != &layer);
|
||||
} else {
|
||||
self.collapsed.0.retain(|collapsed_layer| collapsed_layer != &layer);
|
||||
}
|
||||
} else {
|
||||
if recursive {
|
||||
let children_to_add: Vec<_> = layer.children(metadata).filter(|child| !self.collapsed.0.contains(child)).collect();
|
||||
self.collapsed.0.extend(children_to_add);
|
||||
}
|
||||
self.collapsed.0.push(layer);
|
||||
}
|
||||
|
||||
responses.add(NodeGraphMessage::SendGraph);
|
||||
}
|
||||
DocumentMessage::ToggleSelectedLocked => responses.add(NodeGraphMessage::ToggleSelectedLocked),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue