forked from 1b-agent/opencadstudio-upstream
fix(autosave): autosave unsaved drawings + clean up .sv$ on file-close (#205)
Two gaps in the autosave recovery files: 1. A brand-new, never-saved drawing was never autosaved — on_autosave only wrote tabs that already had a path. A shared autosave_target() now writes saved drawings to <file>.sv$ and unsaved ones to the system temp dir (OpenCADStudio_<name>.sv$). 2. Closing a file (tab) left its .sv$ behind, which also defeated the program-close cleanup (it only scans still-open tabs). on_tab_close and the unsaved-discard path now delete the closing tab's .sv$, and Save/Save-As drop the temp copy a drawing used while it was still unsaved. Program-close cleanup (exit_app -> cleanup_autosaves) already worked. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1 parent
286caa9c61
commit
a9214db344
3 files changed
+39
-13
No files matched your search
@@ -31,6 +31,9 @@ pub(super) fn on_tab_close(&mut self, idx: usize) -> Task<Message> {
|
||||
self.pending_close = Some(crate::app::PendingClose::Tab(idx));
|
||||
return self.open_unsaved_dialog_window();
|
||||
}
|
||||
// This tab is closing for good — drop its autosave recovery copy.
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
let _ = std::fs::remove_file(self.autosave_target(idx));
|
||||
// Only-tab case: when the lone non-start tab closes, fall
|
||||
// back to the Start tab if it exists; otherwise spawn a
|
||||
// fresh blank drawing (legacy behaviour).
|
||||
|
||||
Reference in new issue
Block a user