[gtk+] filechooser portal: Make sure we can save



commit 4875c689a0e826604953965ffdb71d8b82cae364
Author: Matthias Clasen <mclasen redhat com>
Date:   Tue Jan 17 14:08:38 2017 -0500

    filechooser portal: Make sure we can save
    
    Explicitly request files for saving to be writable, otherwise
    we are at the mercy of the portal, which currently gets it wrong.

 gtk/gtkfilechoosernativeportal.c |   15 +++++++++++++--
 1 files changed, 13 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtkfilechoosernativeportal.c b/gtk/gtkfilechoosernativeportal.c
index 981e0d5..3ab9b35 100644
--- a/gtk/gtkfilechoosernativeportal.c
+++ b/gtk/gtkfilechoosernativeportal.c
@@ -53,6 +53,7 @@ typedef struct {
   char *portal_handle;
   guint portal_response_signal_id;
   gboolean modal;
+  gboolean writable;
 
   gboolean hidden;
 
@@ -304,6 +305,8 @@ show_portal_file_chooser (GtkFileChooserNative *self,
                            g_variant_new_string (self->cancel_label));
   g_variant_builder_add (&opt_builder, "{sv}", "modal",
                          g_variant_new_boolean (data->modal));
+  g_variant_builder_add (&opt_builder, "{sv}", "writable",
+                         g_variant_new_boolean (data->writable));
   g_variant_builder_add (&opt_builder, "{sv}", "filters", get_filters (GTK_FILE_CHOOSER (self)));
   if (GTK_FILE_CHOOSER_NATIVE (self)->current_name)
     g_variant_builder_add (&opt_builder, "{sv}", "current_name",
@@ -376,6 +379,7 @@ gtk_file_chooser_native_portal_show (GtkFileChooserNative *self)
   GDBusConnection *connection;
   GtkFileChooserAction action;
   const char *method_name;
+  gboolean writable;
 
   if (!gtk_should_use_portal ())
     return FALSE;
@@ -387,9 +391,15 @@ gtk_file_chooser_native_portal_show (GtkFileChooserNative *self)
   action = gtk_file_chooser_get_action (GTK_FILE_CHOOSER (self));
 
   if (action == GTK_FILE_CHOOSER_ACTION_OPEN)
-    method_name = "OpenFile";
+    {
+      method_name = "OpenFile";
+      writable = FALSE;
+    }
   else if (action == GTK_FILE_CHOOSER_ACTION_SAVE)
-    method_name = "SaveFile";
+    {
+      method_name = "SaveFile";
+      writable = FALSE;
+    }
   else
     {
       g_warning ("GTK_FILE_CHOOSER_ACTION_%s is not supported by GtkFileChooserNativePortal", action == 
GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER ? "SELECT_FOLDER" : "CREATE_FOLDER");
@@ -401,6 +411,7 @@ gtk_file_chooser_native_portal_show (GtkFileChooserNative *self)
   data->connection = connection;
 
   data->method_name = method_name;
+  data->writable = writable;
 
   if (gtk_native_dialog_get_modal (GTK_NATIVE_DIALOG (self)))
     data->modal = TRUE;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]