diff --git a/src/main.rs b/src/main.rs index af4badb..9de6349 100644 --- a/src/main.rs +++ b/src/main.rs @@ -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::(); + 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;