From cb203afc4856fa4e13df86997d8a4a4f54cd98d2 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Thu, 12 Feb 2026 16:40:29 +0000 Subject: [PATCH] Fix: Prevent arrow bend changes when moving groups of shapes - Check if only the relation shape is selected before applying bend changes - When multiple shapes are selected together, perform simple translation - Preserves existing behavior when dragging arrow alone (bend changes allowed) - Aligns with tldraw native arrow behavior for group movements Co-authored-by: Trang Doan --- .../components/canvas/shapes/DiscourseRelationShape.tsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/apps/obsidian/src/components/canvas/shapes/DiscourseRelationShape.tsx b/apps/obsidian/src/components/canvas/shapes/DiscourseRelationShape.tsx index 756955ad1..e3b56bc24 100644 --- a/apps/obsidian/src/components/canvas/shapes/DiscourseRelationShape.tsx +++ b/apps/obsidian/src/components/canvas/shapes/DiscourseRelationShape.tsx @@ -474,8 +474,13 @@ export class DiscourseRelationUtil extends ShapeUtil { const bindings = getArrowBindings(this.editor, shape); - // If both ends are bound, convert translation to bend changes instead of moving the arrow - if (bindings.start && bindings.end) { + // Check if other shapes are also being translated + const selectedShapeIds = this.editor.getSelectedShapeIds(); + const onlyRelationSelected = selectedShapeIds.length === 1 && selectedShapeIds[0] === shape.id; + + // If both ends are bound AND only the relation is selected, convert translation to bend changes + // If other shapes are also selected, do a simple translation instead + if (bindings.start && bindings.end && onlyRelationSelected) { const shapePageTransform = this.editor.getShapePageTransform(shape.id); const pageDelta = Vec.Sub( shapePageTransform.applyToPoint(shape),