diff --git a/editor/src/messages/dialog/export_dialog/export_dialog_message_handler.rs b/editor/src/messages/dialog/export_dialog/export_dialog_message_handler.rs index ec6edfe0fb..0388cc8985 100644 --- a/editor/src/messages/dialog/export_dialog/export_dialog_message_handler.rs +++ b/editor/src/messages/dialog/export_dialog/export_dialog_message_handler.rs @@ -43,13 +43,21 @@ impl MessageHandler> for Exp ExportDialogMessage::TransparentBackground { transparent } => self.transparent_background = transparent, ExportDialogMessage::ExportBounds { bounds } => self.bounds = bounds, - ExportDialogMessage::Submit => responses.add_front(PortfolioMessage::SubmitDocumentExport { - name: portfolio.active_document().map(|document| document.name.clone()).unwrap_or_default(), - file_type: self.file_type, - scale_factor: self.scale_factor, - bounds: self.bounds, - transparent_background: self.file_type != FileType::Jpg && self.transparent_background, - }), + ExportDialogMessage::Submit => { + let artboard_name = match self.bounds { + ExportBounds::Artboard(layer) => self.artboards.get(&layer).cloned(), + _ => None, + }; + responses.add_front(PortfolioMessage::SubmitDocumentExport { + name: portfolio.active_document().map(|document| document.name.clone()).unwrap_or_default(), + file_type: self.file_type, + scale_factor: self.scale_factor, + bounds: self.bounds, + transparent_background: self.file_type != FileType::Jpg && self.transparent_background, + artboard_name, + artboard_count: self.artboards.len(), + }) + } } self.send_dialog_to_frontend(responses); diff --git a/editor/src/messages/portfolio/portfolio_message.rs b/editor/src/messages/portfolio/portfolio_message.rs index 8b914d77f1..de11acd363 100644 --- a/editor/src/messages/portfolio/portfolio_message.rs +++ b/editor/src/messages/portfolio/portfolio_message.rs @@ -124,6 +124,8 @@ pub enum PortfolioMessage { scale_factor: f64, bounds: ExportBounds, transparent_background: bool, + artboard_name: Option, + artboard_count: usize, }, SubmitActiveGraphRender, SubmitGraphRender { diff --git a/editor/src/messages/portfolio/portfolio_message_handler.rs b/editor/src/messages/portfolio/portfolio_message_handler.rs index e9e538b283..7bcad5e421 100644 --- a/editor/src/messages/portfolio/portfolio_message_handler.rs +++ b/editor/src/messages/portfolio/portfolio_message_handler.rs @@ -1036,6 +1036,8 @@ impl MessageHandler> for Portfolio scale_factor, bounds, transparent_background, + artboard_name, + artboard_count, } => { let document = self.active_document_id.and_then(|id| self.documents.get_mut(&id)).expect("Tried to render non-existent document"); let export_config = ExportConfig { @@ -1044,6 +1046,8 @@ impl MessageHandler> for Portfolio scale_factor, bounds, transparent_background, + artboard_name, + artboard_count, ..Default::default() }; let result = self.executor.submit_document_export(document, self.active_document_id.unwrap(), export_config); diff --git a/editor/src/node_graph_executor.rs b/editor/src/node_graph_executor.rs index cb174e8034..8ecffbeebd 100644 --- a/editor/src/node_graph_executor.rs +++ b/editor/src/node_graph_executor.rs @@ -242,6 +242,8 @@ impl NodeGraphExecutor { scale_factor, #[cfg(feature = "gpu")] transparent_background, + artboard_name, + artboard_count, .. } = export_config; @@ -250,7 +252,11 @@ impl NodeGraphExecutor { FileType::Png => "png", FileType::Jpg => "jpg", }; - let name = format!("{name}.{file_extension}"); + let base_name = match (artboard_name, artboard_count) { + (Some(artboard_name), count) if count > 1 => format!("{name} - {artboard_name}"), + _ => name, + }; + let name = format!("{base_name}.{file_extension}"); match node_graph_output { TaggedValue::RenderOutput(RenderOutput { diff --git a/editor/src/node_graph_executor/runtime.rs b/editor/src/node_graph_executor/runtime.rs index 66022cc047..49f99fde0e 100644 --- a/editor/src/node_graph_executor/runtime.rs +++ b/editor/src/node_graph_executor/runtime.rs @@ -85,6 +85,8 @@ pub struct ExportConfig { pub bounds: ExportBounds, pub transparent_background: bool, pub size: DVec2, + pub artboard_name: Option, + pub artboard_count: usize, } #[derive(Clone)]