Workaround for FileChooserNative oddness

This commit is contained in:
Zander Brown 2018-08-26 23:35:44 +01:00 committed by Jordan Petridis
parent cb4daa1ba1
commit 88e07031a6
2 changed files with 27 additions and 27 deletions

View File

@ -109,7 +109,6 @@ impl App {
info!("Application is exiting"); info!("Application is exiting");
app.quit(); app.quit();
Inhibit(false) Inhibit(false)
}); });
@ -394,11 +393,17 @@ impl App {
let weak = Rc::downgrade(&app); let weak = Rc::downgrade(&app);
application.connect_activate(move |_| { application.connect_activate(move |_| {
info!("GApplication::activate"); info!("GApplication::activate");
weak.upgrade().map(|app| app.window.activate()); if let Some(app) = weak.upgrade() {
// Ideally Gtk4/GtkBuilder make this irrelvent
app.window.show_all();
app.window.present();
info!("Window presented");
} else {
debug_assert!(false, "I hate computers");
}
}); });
info!("Init complete"); info!("Init complete");
app.window.show_all();
}); });
}); });

View File

@ -364,32 +364,27 @@ pub(crate) fn on_import_clicked(window: &gtk::ApplicationWindow, sender: &Sender
filter.add_mime_type("text/xml"); filter.add_mime_type("text/xml");
dialog.add_filter(&filter); dialog.add_filter(&filter);
dialog.connect_response(clone!(sender => move |dialog, resp| { let resp = dialog.run();
debug!("Dialog Response {}", resp); debug!("Dialog Response {}", resp);
if resp == ResponseType::Accept.to_glib() { if resp == ResponseType::Accept.to_glib() {
if let Some(filename) = dialog.get_filename() { if let Some(filename) = dialog.get_filename() {
debug!("File selected: {:?}", filename); debug!("File selected: {:?}", filename);
rayon::spawn(clone!(sender => move || { rayon::spawn(clone!(sender => move || {
// Parse the file and import the feeds // Parse the file and import the feeds
if let Ok(sources) = opml::import_from_file(filename) { if let Ok(sources) = opml::import_from_file(filename) {
// Refresh the successfully parsed feeds to index them // Refresh the successfully parsed feeds to index them
refresh(Some(sources), sender) refresh(Some(sources), sender)
} else { } else {
let text = i18n("Failed to parse the imported file"); let text = i18n("Failed to parse the imported file");
sender.send(Action::ErrorNotification(text)); sender.send(Action::ErrorNotification(text));
} }
})) }))
} else { } else {
let text = i18n("Selected file could not be accessed."); let text = i18n("Selected file could not be accessed.");
sender.send(Action::ErrorNotification(text)); sender.send(Action::ErrorNotification(text));
}
} }
}
dialog.destroy();
}));
dialog.run();
} }
#[cfg(test)] #[cfg(test)]