From e4c9c0d713fc08f4537fbb1f1a9e98e795cc0179 Mon Sep 17 00:00:00 2001 From: mtvare6 Date: Mon, 7 Jul 2025 16:32:01 +0530 Subject: [PATCH] add: move pivot on nudge --- .../portfolio/document/document_message_handler.rs | 1 + .../portfolio/document/node_graph/utility_types.rs | 2 +- .../src/messages/tool/tool_messages/select_tool.rs | 12 ++++++++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/editor/src/messages/portfolio/document/document_message_handler.rs b/editor/src/messages/portfolio/document/document_message_handler.rs index e35dded5e..0fbf8ae64 100644 --- a/editor/src/messages/portfolio/document/document_message_handler.rs +++ b/editor/src/messages/portfolio/document/document_message_handler.rs @@ -750,6 +750,7 @@ impl MessageHandler> for DocumentMessag // Nudge translation without resizing if !resize { let transform = DAffine2::from_translation(DVec2::from_angle(-self.document_ptz.tilt()).rotate(DVec2::new(delta_x, delta_y))); + responses.add(SelectToolMessage::ShiftSelectedNodes { offset: transform.translation }); for layer in self.network_interface.shallowest_unique_layers(&[]).filter(|layer| can_move(*layer)) { responses.add(GraphOperationMessage::TransformChange { diff --git a/editor/src/messages/portfolio/document/node_graph/utility_types.rs b/editor/src/messages/portfolio/document/node_graph/utility_types.rs index b743cb1fc..1295ef291 100644 --- a/editor/src/messages/portfolio/document/node_graph/utility_types.rs +++ b/editor/src/messages/portfolio/document/node_graph/utility_types.rs @@ -198,7 +198,7 @@ pub struct FrontendClickTargets { pub modify_import_export: Vec, } -#[derive(Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize, specta::Type)] +#[derive(Clone, Copy, Debug, PartialEq, serde::Serialize, serde::Deserialize, specta::Type)] pub enum Direction { Up, Down, diff --git a/editor/src/messages/tool/tool_messages/select_tool.rs b/editor/src/messages/tool/tool_messages/select_tool.rs index a770b652c..c174d49bf 100644 --- a/editor/src/messages/tool/tool_messages/select_tool.rs +++ b/editor/src/messages/tool/tool_messages/select_tool.rs @@ -100,6 +100,9 @@ pub enum SelectToolMessage { position: ReferencePoint, }, SyncHistory, + ShiftSelectedNodes { + offset: DVec2, + }, } impl ToolMetadata for SelectTool { @@ -570,7 +573,6 @@ impl Fsm for SelectToolFsmState { let ToolActionHandlerData { document, input, font_cache, .. } = tool_action_data; let ToolMessage::Select(event) = event else { return self }; - debug!("{:?}", event); match (self, event) { (_, SelectToolMessage::Overlays(mut overlay_context)) => { tool_data.snap_manager.draw_overlays(SnapData::new(document, input), &mut overlay_context); @@ -819,7 +821,6 @@ impl Fsm for SelectToolFsmState { overlay_context.dowel_pin(origin, origin_angle, Some(COLOR_OVERLAY_YELLOW)); } - debug!("{:?}", tool_data.dot_start); let has_layers = document.network_interface.selected_nodes().has_selected_nodes(); let draw_pivot = tool_data.dot.state.is_pivot() && overlay_context.visibility_settings.pivot() && has_layers; tool_data.dot.pivot.recalculate_pivot(document); @@ -1580,6 +1581,13 @@ impl Fsm for SelectToolFsmState { self } + (_, SelectToolMessage::ShiftSelectedNodes { offset }) => { + if tool_data.dot.pivot_disconnected() { + tool_data.dot.pivot.pivot.as_mut().map(|v| *v += offset); + } + + self + } _ => self, } }