GraphiteEditor / Graphite

2D vector & raster editor that melds traditional layers & tools with a modern node-based, non-destructive, procedural workflow.
https://graphite.rs
Apache License 2.0
7.76k stars 408 forks source link

Code cleanup and refactor for generalized layers #1738

Closed adamgerhant closed 4 months ago

adamgerhant commented 5 months ago

Closes #1510, a follow-up to PR #1712.

Fixes undo bugs by extracting functions into messages. Generalized Copy and Paste for any layer node, and mapped duplicate layers (ctrl+D) to copy and paste.

Refactored Messages: DocumentMessage::DuplicateSelectedLayers DocumentMessage::GroupSelectedLayers DocumentMessage::MoveSelectedLayersTo DocumentMessage::UngroupSelectedLayers NodeGraphMessage::DisconnectNodes NodeGraphMessage::InsertNodeBetween GraphOperationMessage::MoveSelectedSiblingsToChild PortfolioMessage::Copy PortfolioMessage::PasteSerializedData

New Messages: NodeGraphMessage::DisconnectLayerFromStack NodeGraphMessage::SetNodePosition NodeGraphMessage::ShiftUpstream GraphOperationMessage::AddNodesAsChild GraphOperationMessage::DisconnectInput GraphOperationMessage::InsertLayerAtStackIndex GraphOperationMessage::InsertNodeBetween GraphOperationMessage::MoveSelectedSiblingsToChild