From 8effd6eccad4b4a8fc17a93dc8572f8916fa1fbf Mon Sep 17 00:00:00 2001 From: 0HyperCube <78500760+0HyperCube@users.noreply.github.com> Date: Thu, 18 Aug 2022 13:40:34 +0100 Subject: [PATCH] Fix images and text again (#752) * Images and text now work again * Fix crash on load images --- .../document/document_message_handler.rs | 20 ++++++++----------- .../messages/portfolio/portfolio_message.rs | 1 + .../portfolio/portfolio_message_handler.rs | 9 +++++++-- graphene/src/document.rs | 3 +++ 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/editor/src/messages/portfolio/document/document_message_handler.rs b/editor/src/messages/portfolio/document/document_message_handler.rs index 7d4d9e38..d9885a08 100644 --- a/editor/src/messages/portfolio/document/document_message_handler.rs +++ b/editor/src/messages/portfolio/document/document_message_handler.rs @@ -455,23 +455,19 @@ impl MessageHandler { let path = vec![generate_uuid()]; - responses.push_front( - FrontendMessage::UpdateImageData { - image_data: vec![FrontendImageData { - path: path.clone(), - image_data: image_data.clone(), - mime: mime.clone(), - }], - } - .into(), - ); responses.push_back( DocumentOperation::AddImage { path: path.clone(), transform: DAffine2::ZERO.to_cols_array(), insert_index: -1, - mime, - image_data, + image_data: image_data.clone(), + mime: mime.clone(), + } + .into(), + ); + responses.push_back( + FrontendMessage::UpdateImageData { + image_data: vec![FrontendImageData { path: path.clone(), image_data, mime }], } .into(), ); diff --git a/editor/src/messages/portfolio/portfolio_message.rs b/editor/src/messages/portfolio/portfolio_message.rs index cc9d3cca..0d086a9f 100644 --- a/editor/src/messages/portfolio/portfolio_message.rs +++ b/editor/src/messages/portfolio/portfolio_message.rs @@ -46,6 +46,7 @@ pub enum PortfolioMessage { is_default: bool, }, Import, + LoadDocumentResources, LoadFont { font: Font, is_default: bool, diff --git a/editor/src/messages/portfolio/portfolio_message_handler.rs b/editor/src/messages/portfolio/portfolio_message_handler.rs index bb39d72f..77976fcb 100644 --- a/editor/src/messages/portfolio/portfolio_message_handler.rs +++ b/editor/src/messages/portfolio/portfolio_message_handler.rs @@ -186,6 +186,7 @@ impl MessageHandler for Port if let Some(document) = self.active_document_mut() { document.graphene_document.mark_all_layers_of_type_as_dirty(LayerDataTypeDiscriminant::Text); responses.push_back(DocumentMessage::RenderDocument.into()); + responses.push_back(BroadcastEvent::DocumentIsDirty.into()); } } Import => { @@ -194,6 +195,11 @@ impl MessageHandler for Port responses.push_back(FrontendMessage::TriggerImport.into()); } } + LoadDocumentResources => { + if let Some(document) = self.active_document_mut() { + document.load_layer_resources(responses, &document.graphene_document.root.data, Vec::new()); + } + } LoadFont { font, is_default } => { if !self.font_cache.loaded_font(&font) { responses.push_front(FrontendMessage::TriggerFontLoad { font, is_default }.into()); @@ -488,8 +494,6 @@ impl PortfolioMessageHandler { ); new_document.update_layer_tree_options_bar_widgets(responses, &self.font_cache); - new_document.load_layer_resources(responses, &new_document.graphene_document.root.data, Vec::new()); - self.documents.insert(document_id, new_document); if self.active_document().is_some() { @@ -500,6 +504,7 @@ impl PortfolioMessageHandler { responses.push_back(PortfolioMessage::UpdateOpenDocumentsList.into()); responses.push_back(PortfolioMessage::SelectDocument { document_id }.into()); + responses.push_back(PortfolioMessage::LoadDocumentResources.into()); responses.push_back(PortfolioMessage::UpdateDocumentWidgets.into()); responses.push_back(ToolMessage::InitTools.into()); responses.push_back(PropertiesPanelMessage::Init.into()); diff --git a/graphene/src/document.rs b/graphene/src/document.rs index add2e169..b1671742 100644 --- a/graphene/src/document.rs +++ b/graphene/src/document.rs @@ -422,6 +422,9 @@ impl Document { } if LayerDataTypeDiscriminant::from(&root.data) == data_type { root.cache_dirty = true; + if let LayerDataType::Text(text) = &mut root.data { + text.cached_path = None; + } } root.cache_dirty