From dc46959274f5c2fd40f8fd2fe150b8f7bc0261ce Mon Sep 17 00:00:00 2001 From: adamgerhant <116332429+adamgerhant@users.noreply.github.com> Date: Mon, 7 Oct 2024 13:13:52 -0700 Subject: [PATCH] Fix double clicking anchor to convert between smooth and sharp (#2023) * Buffer after undo * Quick thumbnail fix while I'm thinking about it --------- Co-authored-by: Keavon Chambers --- .../document/document_message_handler.rs | 1 + .../utility_types/network_interface.rs | 1 + .../tool/common_functionality/shape_editor.rs | 1 - .../demo-artwork/thumbnail-painted-dreams.png | Bin 10274 -> 8567 bytes 4 files changed, 2 insertions(+), 1 deletion(-) diff --git a/editor/src/messages/portfolio/document/document_message_handler.rs b/editor/src/messages/portfolio/document/document_message_handler.rs index b0eea647fd..9dc270f098 100644 --- a/editor/src/messages/portfolio/document/document_message_handler.rs +++ b/editor/src/messages/portfolio/document/document_message_handler.rs @@ -1551,6 +1551,7 @@ impl DocumentMessageHandler { responses.add(NodeGraphMessage::ForceRunDocumentGraph); // TODO: Remove once the footprint is used to load the imports/export distances from the edge responses.add(NodeGraphMessage::SetGridAlignedEdges); + responses.add(Message::StartBuffer); Some(previous_network) } pub fn redo_with_history(&mut self, ipp: &InputPreprocessorMessageHandler, responses: &mut VecDeque) { diff --git a/editor/src/messages/portfolio/document/utility_types/network_interface.rs b/editor/src/messages/portfolio/document/utility_types/network_interface.rs index 9fc1f9ca10..e0e284a69c 100644 --- a/editor/src/messages/portfolio/document/utility_types/network_interface.rs +++ b/editor/src/messages/portfolio/document/utility_types/network_interface.rs @@ -2822,6 +2822,7 @@ impl NodeNetworkInterface { } return Some(modified); } + self.document_metadata .click_targets .get(&layer) diff --git a/editor/src/messages/tool/common_functionality/shape_editor.rs b/editor/src/messages/tool/common_functionality/shape_editor.rs index 1c48e3e2c7..dd521f14ea 100644 --- a/editor/src/messages/tool/common_functionality/shape_editor.rs +++ b/editor/src/messages/tool/common_functionality/shape_editor.rs @@ -1091,7 +1091,6 @@ impl ShapeState { // Check by comparing the handle positions to the anchor if this manipulator group is a point let already_sharp = positions.next().is_none(); - if already_sharp { self.convert_manipulator_handles_to_colinear(&vector_data, id, responses, layer); } else { diff --git a/frontend/assets/images/demo-artwork/thumbnail-painted-dreams.png b/frontend/assets/images/demo-artwork/thumbnail-painted-dreams.png index c16adfcae54aab152ede2b352b4a0231594ebcc1..61aa80af8a805fbcf9d86c8d27a9de9aa0eabb2a 100644 GIT binary patch literal 8567 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 b?nI@IGiMmE25SHQ1gfWPto2aCHRgW++30K8 literal 10274 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 S`VR#N04fTa@}Fd_qW%vv@sEW7