fix: drop RefCell borrow during SVG saving and configure FileDialog to default to SVG
This commit is contained in:
+12
-1
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user