fix: drop RefCell borrow during SVG saving and configure FileDialog to default to SVG

This commit is contained in:
2026-08-03 23:09:54 -04:00
parent 35f0af2188
commit f45eb5e70a
+12 -1
View File
@@ -193,14 +193,25 @@ fn build_editor(stack: &Stack, window: &ApplicationWindow, icon_path: PathBuf, b
let window_clone = window.clone();
let comp = Rc::clone(&comp);
move || {
let filter = gtk::FileFilter::new();
filter.set_name(Some("SVG Images"));
filter.add_mime_type("image/svg+xml");
filter.add_pattern("*.svg");
let filters = gtk::gio::ListStore::new::<gtk::FileFilter>();
filters.append(&filter);
let dialog = gtk::FileDialog::builder()
.title("Save Composite Icon As...")
.filters(&filters)
.default_filter(&filter)
.build();
let c = Rc::clone(&comp);
dialog.save(Some(&window_clone), gtk::gio::Cancellable::NONE, move |res| {
if let Ok(file) = res {
if let Some(path) = file.path() {
if let Err(e) = std::fs::write(&path, c.borrow().render()) {
let rendered = c.borrow().render();
if let Err(e) = std::fs::write(&path, rendered) {
eprintln!("Failed to save composite to {}: {e}", path.display());
} else {
c.borrow_mut().is_modified = false;