mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-22 06:58:13 +08:00
Add shifting of layers in stacks as blocks that collide and bump other layers/nodes (#1940)
* Shift nodes as blocks * Implement rubber banding * Improve upstream locking when shifting layers * WIP: Reworked shifting * WIP: Reworked node shifting * Finish shifting * Fix demo artwork * Code review * Right click to end shift * Improve rubber banding * Fix clippy issues * Skip collision for intersecting nodes * Rubber banding bug fix * Fix ctrl+delete node in chain * Grip drag * Fix layer width * Add icon to frontend for the solo drag grip * Reconnect during ctrl+delete * Code review --------- Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
co-authored by
Keavon Chambers
parent
a7840b252d
commit
78337f9b8e
@@ -1,9 +1,6 @@
|
||||
use super::tool_prelude::*;
|
||||
use crate::messages::portfolio::document::utility_types::document_metadata::LayerNodeIdentifier;
|
||||
use crate::messages::tool::common_functionality::resize::Resize;
|
||||
|
||||
use graph_craft::document::{generate_uuid, NodeId};
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct ImaginateTool {
|
||||
fsm_state: ImaginateToolFsmState,
|
||||
@@ -101,7 +98,7 @@ impl Fsm for ImaginateToolFsmState {
|
||||
(ImaginateToolFsmState::Ready, ImaginateToolMessage::DragStart) => {
|
||||
shape_data.start(document, input);
|
||||
responses.add(DocumentMessage::StartTransaction);
|
||||
shape_data.layer = Some(LayerNodeIdentifier::new(NodeId(generate_uuid()), &document.network_interface));
|
||||
//shape_data.layer = Some(LayerNodeIdentifier::new(NodeId(generate_uuid()), &document.network_interface));
|
||||
responses.add(DocumentMessage::DeselectAllLayers);
|
||||
|
||||
// // Utility function to offset the position of each consecutive node
|
||||
|
||||
@@ -367,7 +367,7 @@ impl SelectToolData {
|
||||
for layer in document.network_interface.shallowest_unique_layers(&[]) {
|
||||
responses.add(NodeGraphMessage::DeleteNodes {
|
||||
node_ids: vec![layer.to_node()],
|
||||
reconnect: true,
|
||||
delete_children: true,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1203,6 +1203,7 @@ fn drag_deepest_manipulation(responses: &mut VecDeque<Message>, selected: Vec<La
|
||||
tool_data.layers_dragging.append(&mut vec![document.find_deepest(&selected).unwrap_or(LayerNodeIdentifier::new(
|
||||
document.network_interface.root_node(&[]).expect("Root node should exist when dragging layers").node_id,
|
||||
&document.network_interface,
|
||||
&[],
|
||||
))]);
|
||||
responses.add(NodeGraphMessage::SelectedNodesSet {
|
||||
nodes: tool_data
|
||||
|
||||
Reference in New Issue
Block a user