forked from 1b-agent/opencadstudio-upstream
fix(save): append format extension to bare filename
The save dialog wrote the typed name verbatim, so entering "foo" with DWG 2018 selected produced an extensionless "foo". The extension was only added when the format pick-list changed, not on confirm. Now confirm appends the selected format's extension when the name has none (empty name falls back to drawing.<ext>); a name that already carries an extension is left untouched. Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
1 parent
4b878b88c4
commit
0ee8f5265d
1 file changed
+13
-2
+13
-2
@@ -646,8 +646,19 @@ impl OpenCADStudio {
|
||||
}
|
||||
|
||||
Message::SaveDialogConfirm => {
|
||||
let path = self.save_dialog_folder.join(&self.save_dialog_filename);
|
||||
let (_, version) = crate::io::parse_save_format(&self.save_dialog_format);
|
||||
let (ext, version) = crate::io::parse_save_format(&self.save_dialog_format);
|
||||
// The user need not type an extension: append the selected
|
||||
// format's one when the entered name carries none.
|
||||
let name = self.save_dialog_filename.trim();
|
||||
let filename = if name.is_empty() {
|
||||
format!("drawing.{ext}")
|
||||
} else if std::path::Path::new(name).extension().is_none() {
|
||||
format!("{name}.{ext}")
|
||||
} else {
|
||||
name.to_string()
|
||||
};
|
||||
self.save_dialog_filename = filename.clone();
|
||||
let path = self.save_dialog_folder.join(&filename);
|
||||
let close = self.close_save_dialog_window();
|
||||
let i = self.active_tab;
|
||||
sync_annotation_scale_header(&mut self.tabs[i].scene);
|
||||
|
||||
Reference in new issue
Block a user