From 76e9bf8f3916e41547525656ae219467be1bb0c9 Mon Sep 17 00:00:00 2001 From: Nikhil V Date: Wed, 24 Dec 2025 00:45:05 +0530 Subject: [PATCH] Fix: drag offset(ensures Select tool drag state persists during vieport navigation) --- editor/src/messages/tool/tool_messages/select_tool.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/editor/src/messages/tool/tool_messages/select_tool.rs b/editor/src/messages/tool/tool_messages/select_tool.rs index 28ecbdfcb6..ccf24430d8 100644 --- a/editor/src/messages/tool/tool_messages/select_tool.rs +++ b/editor/src/messages/tool/tool_messages/select_tool.rs @@ -2,7 +2,7 @@ use super::tool_prelude::*; use crate::consts::*; -use crate::messages::input_mapper::utility_types::input_mouse::ViewportPosition; +use crate::messages::input_mapper::utility_types::input_mouse::{ViewportPosition, MouseKeys}; use crate::messages::portfolio::document::graph_operation::utility_types::TransformIn; use crate::messages::portfolio::document::overlays::utility_types::OverlayContext; use crate::messages::portfolio::document::utility_types::document_metadata::{DocumentMetadata, LayerNodeIdentifier}; @@ -606,6 +606,7 @@ impl Fsm for SelectToolFsmState { let ToolMessage::Select(event) = event else { return self }; match (self, event) { + (SelectToolFsmState::Dragging { .. }, SelectToolMessage::Overlays { .. }) => self, (_, SelectToolMessage::Overlays { context: mut overlay_context }) => { tool_data.snap_manager.draw_overlays(SnapData::new(document, input, viewport), &mut overlay_context); @@ -1393,8 +1394,11 @@ impl Fsm for SelectToolFsmState { state } - (SelectToolFsmState::Dragging { has_dragged, remove, deepest, .. }, SelectToolMessage::DragStop { remove_from_selection }) => { + (SelectToolFsmState::Dragging { has_dragged, remove, deepest, axis, using_compass }, SelectToolMessage::DragStop { remove_from_selection }) => { // Deselect layer if not snap dragging + if input.mouse.mouse_keys.contains(MouseKeys::LEFT) { + return SelectToolFsmState::Dragging { has_dragged, remove, deepest, axis, using_compass }; + } responses.add(DocumentMessage::EndTransaction); tool_data.axis_align = false;