Fix images and text again (#752)

* Images and text now work again

* Fix crash on load images
This commit is contained in:
0HyperCube 2022-08-18 13:40:34 +01:00 committed by Keavon Chambers
parent 4025815515
commit 8effd6ecca
4 changed files with 19 additions and 14 deletions

View File

@ -455,23 +455,19 @@ impl MessageHandler<DocumentMessage, (&InputPreprocessorMessageHandler, &FontCac
} }
PasteImage { mime, image_data, mouse } => { PasteImage { mime, image_data, mouse } => {
let path = vec![generate_uuid()]; 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( responses.push_back(
DocumentOperation::AddImage { DocumentOperation::AddImage {
path: path.clone(), path: path.clone(),
transform: DAffine2::ZERO.to_cols_array(), transform: DAffine2::ZERO.to_cols_array(),
insert_index: -1, insert_index: -1,
mime, image_data: image_data.clone(),
image_data, mime: mime.clone(),
}
.into(),
);
responses.push_back(
FrontendMessage::UpdateImageData {
image_data: vec![FrontendImageData { path: path.clone(), image_data, mime }],
} }
.into(), .into(),
); );

View File

@ -46,6 +46,7 @@ pub enum PortfolioMessage {
is_default: bool, is_default: bool,
}, },
Import, Import,
LoadDocumentResources,
LoadFont { LoadFont {
font: Font, font: Font,
is_default: bool, is_default: bool,

View File

@ -186,6 +186,7 @@ impl MessageHandler<PortfolioMessage, &InputPreprocessorMessageHandler> for Port
if let Some(document) = self.active_document_mut() { if let Some(document) = self.active_document_mut() {
document.graphene_document.mark_all_layers_of_type_as_dirty(LayerDataTypeDiscriminant::Text); document.graphene_document.mark_all_layers_of_type_as_dirty(LayerDataTypeDiscriminant::Text);
responses.push_back(DocumentMessage::RenderDocument.into()); responses.push_back(DocumentMessage::RenderDocument.into());
responses.push_back(BroadcastEvent::DocumentIsDirty.into());
} }
} }
Import => { Import => {
@ -194,6 +195,11 @@ impl MessageHandler<PortfolioMessage, &InputPreprocessorMessageHandler> for Port
responses.push_back(FrontendMessage::TriggerImport.into()); 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 } => { LoadFont { font, is_default } => {
if !self.font_cache.loaded_font(&font) { if !self.font_cache.loaded_font(&font) {
responses.push_front(FrontendMessage::TriggerFontLoad { font, is_default }.into()); 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.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); self.documents.insert(document_id, new_document);
if self.active_document().is_some() { if self.active_document().is_some() {
@ -500,6 +504,7 @@ impl PortfolioMessageHandler {
responses.push_back(PortfolioMessage::UpdateOpenDocumentsList.into()); responses.push_back(PortfolioMessage::UpdateOpenDocumentsList.into());
responses.push_back(PortfolioMessage::SelectDocument { document_id }.into()); responses.push_back(PortfolioMessage::SelectDocument { document_id }.into());
responses.push_back(PortfolioMessage::LoadDocumentResources.into());
responses.push_back(PortfolioMessage::UpdateDocumentWidgets.into()); responses.push_back(PortfolioMessage::UpdateDocumentWidgets.into());
responses.push_back(ToolMessage::InitTools.into()); responses.push_back(ToolMessage::InitTools.into());
responses.push_back(PropertiesPanelMessage::Init.into()); responses.push_back(PropertiesPanelMessage::Init.into());

View File

@ -422,6 +422,9 @@ impl Document {
} }
if LayerDataTypeDiscriminant::from(&root.data) == data_type { if LayerDataTypeDiscriminant::from(&root.data) == data_type {
root.cache_dirty = true; root.cache_dirty = true;
if let LayerDataType::Text(text) = &mut root.data {
text.cached_path = None;
}
} }
root.cache_dirty root.cache_dirty