diff --git a/editor/src/messages/portfolio/document/document_message.rs b/editor/src/messages/portfolio/document/document_message.rs index 82938889..0cc96033 100644 --- a/editor/src/messages/portfolio/document/document_message.rs +++ b/editor/src/messages/portfolio/document/document_message.rs @@ -10,8 +10,8 @@ use graphene_core::raster::Image; use graphene_core::vector::style::ViewMode; use graphene_core::Color; +use glam::DAffine2; use serde::{Deserialize, Serialize}; - #[impl_message(Message, PortfolioMessage, Document)] #[derive(PartialEq, Clone, Debug, Serialize, Deserialize)] pub enum DocumentMessage { @@ -68,6 +68,13 @@ pub enum DocumentMessage { imaginate_node: Vec, then_generate: bool, }, + ImportSvg { + id: NodeId, + svg: String, + transform: DAffine2, + parent: LayerNodeIdentifier, + insert_index: isize, + }, MoveSelectedLayersTo { parent: LayerNodeIdentifier, insert_index: isize, diff --git a/editor/src/messages/portfolio/document/document_message_handler.rs b/editor/src/messages/portfolio/document/document_message_handler.rs index 4c500381..450e30a3 100644 --- a/editor/src/messages/portfolio/document/document_message_handler.rs +++ b/editor/src/messages/portfolio/document/document_message_handler.rs @@ -531,6 +531,22 @@ impl MessageHandler> for DocumentMessageHand responses.add(DocumentMessage::ImaginateGenerate); } } + ImportSvg { + id, + svg, + transform, + parent, + insert_index, + } => { + self.backup(responses); + responses.add(GraphOperationMessage::NewSvg { + id, + svg, + transform, + parent, + insert_index, + }); + } MoveSelectedLayersTo { parent, insert_index } => { let selected_layers = self.selected_nodes.selected_layers(self.metadata()).collect::>(); diff --git a/editor/src/messages/portfolio/document/node_graph/graph_operation_message_handler.rs b/editor/src/messages/portfolio/document/node_graph/graph_operation_message_handler.rs index 11b3ebbe..137e9c2c 100644 --- a/editor/src/messages/portfolio/document/node_graph/graph_operation_message_handler.rs +++ b/editor/src/messages/portfolio/document/node_graph/graph_operation_message_handler.rs @@ -773,6 +773,7 @@ impl MessageHandler> for Gr let tree = match usvg::Tree::from_str(&svg, &usvg::Options::default()) { Ok(t) => t, Err(e) => { + responses.add(DocumentMessage::DocumentHistoryBackward); responses.add(DialogMessage::DisplayDialogError { title: "SVG parsing failed".to_string(), description: e.to_string(), diff --git a/editor/src/messages/tool/common_functionality/graph_modification_utils.rs b/editor/src/messages/tool/common_functionality/graph_modification_utils.rs index 6b9e9cce..c88a9991 100644 --- a/editor/src/messages/tool/common_functionality/graph_modification_utils.rs +++ b/editor/src/messages/tool/common_functionality/graph_modification_utils.rs @@ -37,7 +37,7 @@ pub fn new_image_layer(image_frame: ImageFrame, id: NodeId, parent: Layer /// Create a new group layer from an svg pub fn new_svg_layer(svg: String, transform: glam::DAffine2, id: NodeId, parent: LayerNodeIdentifier, responses: &mut VecDeque) -> LayerNodeIdentifier { let insert_index = -1; - responses.add(GraphOperationMessage::NewSvg { + responses.add(DocumentMessage::ImportSvg { id, svg, transform,