From 983db64ce438de3dd8613f09936f0607b772ffe2 Mon Sep 17 00:00:00 2001 From: Annonnymmousss Date: Mon, 5 Jan 2026 08:56:50 +0530 Subject: [PATCH 1/2] fix : Line Tool doesn't reflect endpoint changes made by Path Tool --- .../common_functionality/shapes/line_shape.rs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/editor/src/messages/tool/common_functionality/shapes/line_shape.rs b/editor/src/messages/tool/common_functionality/shapes/line_shape.rs index d05b0bb361..77bdf998bb 100644 --- a/editor/src/messages/tool/common_functionality/shapes/line_shape.rs +++ b/editor/src/messages/tool/common_functionality/shapes/line_shape.rs @@ -92,8 +92,22 @@ impl Line { let node_inputs = NodeGraphLayer::new(layer, &document.network_interface).find_node_inputs(&DefinitionIdentifier::ProtoNode(graphene_std::vector::generator_nodes::line::IDENTIFIER))?; - let (Some(&TaggedValue::DVec2(start)), Some(&TaggedValue::DVec2(end))) = (node_inputs[1].as_value(), node_inputs[2].as_value()) else { - return None; + let (start, end) = if let Some(vector) = document.network_interface.compute_modified_vector(layer) { + let endpoints: Vec = vector.anchor_endpoints().filter_map(|point_id| vector.point_domain.position_from_id(point_id)).collect(); + + if endpoints.len() == 2 { + (endpoints[0], endpoints[1]) + } else { + let (Some(&TaggedValue::DVec2(start)), Some(&TaggedValue::DVec2(end))) = (node_inputs[1].as_value(), node_inputs[2].as_value()) else { + return None; + }; + (start, end) + } + } else { + let (Some(&TaggedValue::DVec2(start)), Some(&TaggedValue::DVec2(end))) = (node_inputs[1].as_value(), node_inputs[2].as_value()) else { + return None; + }; + (start, end) }; let [viewport_start, viewport_end] = [start, end].map(|point| document.metadata().transform_to_viewport(layer).transform_point2(point)); From fab461c4ebc9f1e9883d86c6419cee3d7de962e3 Mon Sep 17 00:00:00 2001 From: Annonnymmousss Date: Mon, 5 Jan 2026 09:12:23 +0530 Subject: [PATCH 2/2] fix : redundancy of code --- .../common_functionality/shapes/line_shape.rs | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/editor/src/messages/tool/common_functionality/shapes/line_shape.rs b/editor/src/messages/tool/common_functionality/shapes/line_shape.rs index 77bdf998bb..2cf6e4c043 100644 --- a/editor/src/messages/tool/common_functionality/shapes/line_shape.rs +++ b/editor/src/messages/tool/common_functionality/shapes/line_shape.rs @@ -92,23 +92,19 @@ impl Line { let node_inputs = NodeGraphLayer::new(layer, &document.network_interface).find_node_inputs(&DefinitionIdentifier::ProtoNode(graphene_std::vector::generator_nodes::line::IDENTIFIER))?; - let (start, end) = if let Some(vector) = document.network_interface.compute_modified_vector(layer) { - let endpoints: Vec = vector.anchor_endpoints().filter_map(|point_id| vector.point_domain.position_from_id(point_id)).collect(); - - if endpoints.len() == 2 { - (endpoints[0], endpoints[1]) - } else { + let (start, end) = document + .network_interface + .compute_modified_vector(layer) + .and_then(|vector| { + let endpoints: Vec = vector.anchor_endpoints().filter_map(|point_id| vector.point_domain.position_from_id(point_id)).collect(); + (endpoints.len() == 2).then(|| (endpoints[0], endpoints[1])) + }) + .or_else(|| { let (Some(&TaggedValue::DVec2(start)), Some(&TaggedValue::DVec2(end))) = (node_inputs[1].as_value(), node_inputs[2].as_value()) else { return None; }; - (start, end) - } - } else { - let (Some(&TaggedValue::DVec2(start)), Some(&TaggedValue::DVec2(end))) = (node_inputs[1].as_value(), node_inputs[2].as_value()) else { - return None; - }; - (start, end) - }; + Some((start, end)) + })?; let [viewport_start, viewport_end] = [start, end].map(|point| document.metadata().transform_to_viewport(layer).transform_point2(point)); if !start.abs_diff_eq(end, f64::EPSILON * 1000.) {