@@ -24,7 +24,7 @@ use egui::*;
2424use fluent_templates:: fluent_bundle:: FluentValue ;
2525use fluent_templates:: { static_loader, Loader } ;
2626use menu_bar:: MenuBar ;
27- use rfd:: FileDialog ;
27+ use rfd:: AsyncFileDialog ;
2828use ruffle_core:: debug_ui:: Message as DebugMessage ;
2929use ruffle_core:: { Player , PlayerEvent } ;
3030use std:: collections:: HashMap ;
@@ -170,19 +170,23 @@ impl RuffleGui {
170170 }
171171 }
172172 for item in player. debug_ui ( ) . items_to_save ( ) {
173- std:: thread:: spawn ( move || {
174- if let Some ( path) = FileDialog :: new ( )
175- . set_file_name ( & item. suggested_name )
176- . save_file ( )
177- {
178- if let Err ( e) = fs:: write ( & path, item. data ) {
173+ let dialog = AsyncFileDialog :: new ( ) . set_file_name ( & item. suggested_name ) ;
174+ let picker = self . dialogs . file_picker ( ) ;
175+ let result = picker. show_dialog ( dialog, |d| d. save_file ( ) ) ;
176+ if let Some ( result) = result {
177+ tokio:: spawn ( async move {
178+ let Some ( handle) = result. await else {
179+ return ;
180+ } ;
181+ let path = handle. path ( ) ;
182+ if let Err ( e) = fs:: write ( path, item. data ) {
179183 tracing:: error!(
180184 "Couldn't save {} to {path:?}: {e}" ,
181185 item. suggested_name,
182186 ) ;
183187 }
184- }
185- } ) ;
188+ } ) ;
189+ }
186190 }
187191
188192 if let Some ( context_menu) = & mut self . context_menu {
0 commit comments