mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-10-24 09:46:59 -06:00
On Linux the save dialog is the XDG desktop portal's, shown through rfd. rfd sends no `current_filter` and reads only the file name from the portal's answer, and the GTK file chooser keeps the typed name when another file type is picked. With "PDF-compatible .ai" picked, `poster` typed for a new document was saved as a native `poster.vectorcraft`, and so was the suggested `Untitled-1.vectorcraft` left as it was. When a save offers two or more file types (Save As, Save a Copy, Save as Template and the first Save of a new document), the app now calls the portal's SaveFile itself over D-Bus. The dialog starts on the suggested file's type, and its answer names the type picked. A name typed without an extension, or the suggested name left as it was, gets that type's extension. A name typed with another save format's extension, other than the suggested file's (for Save as Template, a template format's), is saved in that format, and any other extension gets the picked type's added. The dialog keeps the window as its parent on X11 and Wayland, and rfd shows the dialog when the portal can't. The same code runs on the BSDs; Windows, macOS and the web build keep their dialogs. Docs: docs/target-app-parity.md.