Mark new documents as saved (#3165)

* clean up new document message handling

* Mark new documents as saved
This commit is contained in:
Timon
2025-09-11 12:09:15 -07:00
committed by Keavon Chambers
parent 5836416632
commit 2483832227
4 changed files with 13 additions and 8 deletions
@@ -45,6 +45,8 @@ impl<'a> MessageHandler<NewDocumentDialogMessage, NewDocumentDialogMessageContex
messages: vec![DocumentMessage::ZoomCanvasToFitAll.into(), DocumentMessage::DeselectAllLayers.into()], messages: vec![DocumentMessage::ZoomCanvasToFitAll.into(), DocumentMessage::DeselectAllLayers.into()],
}); });
} }
responses.add(DocumentMessage::MarkAsSaved);
} }
} }
@@ -122,6 +122,7 @@ pub enum DocumentMessage {
SavedDocument { SavedDocument {
path: Option<PathBuf>, path: Option<PathBuf>,
}, },
MarkAsSaved,
SelectParentLayer, SelectParentLayer,
SelectAllLayers, SelectAllLayers,
SelectedLayersLower, SelectedLayersLower,
@@ -1062,6 +1062,10 @@ impl MessageHandler<DocumentMessage, DocumentMessageContext<'_>> for DocumentMes
responses.add(NodeGraphMessage::UpdateNewNodeGraph); responses.add(NodeGraphMessage::UpdateNewNodeGraph);
} }
} }
DocumentMessage::MarkAsSaved => {
self.set_save_state(true);
responses.add(PortfolioMessage::UpdateOpenDocumentsList);
}
DocumentMessage::SelectParentLayer => { DocumentMessage::SelectParentLayer => {
let selected_nodes = self.network_interface.selected_nodes(); let selected_nodes = self.network_interface.selected_nodes();
let selected_layers = selected_nodes.selected_layers(self.metadata()); let selected_layers = selected_nodes.selected_layers(self.metadata());
@@ -390,19 +390,17 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageContext<'_>> for Portfolio
PortfolioMessage::NewDocumentWithName { name } => { PortfolioMessage::NewDocumentWithName { name } => {
let mut new_document = DocumentMessageHandler::default(); let mut new_document = DocumentMessageHandler::default();
new_document.name = name; new_document.name = name;
let mut new_responses = VecDeque::new();
new_responses.add(DocumentMessage::PTZUpdate); responses.add(DocumentMessage::PTZUpdate);
let document_id = DocumentId(generate_uuid()); let document_id = DocumentId(generate_uuid());
if self.active_document().is_some() { if self.active_document().is_some() {
new_responses.add(EventMessage::ToolAbort); responses.add(EventMessage::ToolAbort);
new_responses.add(NavigationMessage::CanvasPan { delta: (0., 0.).into() }); responses.add(NavigationMessage::CanvasPan { delta: (0., 0.).into() });
} }
self.load_document(new_document, document_id, self.layers_panel_open, &mut new_responses, false); self.load_document(new_document, document_id, self.layers_panel_open, responses, false);
new_responses.add(PortfolioMessage::SelectDocument { document_id }); responses.add(PortfolioMessage::SelectDocument { document_id });
new_responses.extend(responses.drain(..));
*responses = new_responses;
} }
PortfolioMessage::NextDocument => { PortfolioMessage::NextDocument => {
if let Some(active_document_id) = self.active_document_id { if let Some(active_document_id) = self.active_document_id {