[fractal/wip/cdavis/use-filechoosernative: 135/135] event_actions: Use GtkFileChooserNative for saving
- From: Julian Sparber <jsparber src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [fractal/wip/cdavis/use-filechoosernative: 135/135] event_actions: Use GtkFileChooserNative for saving
- Date: Thu, 13 Oct 2022 10:31:41 +0000 (UTC)
commit 748dd012823fb24345d365ddc1ce9376a0d18927
Author: Christopher Davis <christopherdavis gnome org>
Date: Tue Aug 2 20:47:03 2022 -0400
event_actions: Use GtkFileChooserNative for saving
Fractal does not have a full view of the filesystem, which
means that we can't use GtkFileChooserDialog if we want users
to be able to save anywhere. Instead, we need to use the
file chooser portal via GtkFileChooserNative.
Closes https://gitlab.gnome.org/GNOME/fractal/-/issues/1064
src/session/room/event_actions.rs | 37 +++++++++++++++++++------------------
1 file changed, 19 insertions(+), 18 deletions(-)
---
diff --git a/src/session/room/event_actions.rs b/src/session/room/event_actions.rs
index debb7e607..6a5473678 100644
--- a/src/session/room/event_actions.rs
+++ b/src/session/room/event_actions.rs
@@ -266,32 +266,33 @@ where
}
};
- let dialog = gtk::FileChooserDialog::new(
+ let dialog = gtk::FileChooserNative::new(
Some(&gettext("Save File")),
Some(&window),
gtk::FileChooserAction::Save,
- &[
- (&gettext("Save"), gtk::ResponseType::Accept),
- (&gettext("Cancel"), gtk::ResponseType::Cancel),
- ],
+ Some(&gettext("Save")),
+ Some(&gettext("Cancel")),
);
dialog.set_current_name(&filename);
- let response = dialog.run_future().await;
- if response == gtk::ResponseType::Accept {
- if let Some(file) = dialog.file() {
- file.replace_contents(
- &data,
- None,
- false,
- gio::FileCreateFlags::REPLACE_DESTINATION,
- gio::Cancellable::NONE,
- )
- .unwrap();
+ dialog.connect_response(clone!(@strong dialog => move |_, response| {
+ if response == gtk::ResponseType::Accept {
+ if let Some(file) = dialog.file() {
+ file.replace_contents(
+ &data,
+ None,
+ false,
+ gio::FileCreateFlags::REPLACE_DESTINATION,
+ gio::Cancellable::NONE,
+ )
+ .unwrap();
+ }
}
- }
- dialog.close();
+ dialog.destroy();
+ }));
+
+ dialog.show();
})
);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]