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 } => {
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(),
);

View File

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

View File

@ -186,6 +186,7 @@ impl MessageHandler<PortfolioMessage, &InputPreprocessorMessageHandler> 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<PortfolioMessage, &InputPreprocessorMessageHandler> 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());

View File

@ -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