filedialog: Drop shortcut folders
authorMatthias Clasen <mclasen@redhat.com>
Fri, 6 Jan 2023 12:40:57 +0000 (07:40 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 6 Jan 2023 12:40:57 +0000 (07:40 -0500)
The filechooser portal does not support this,
and we are defaulting to using the portal now.
Lets not offer a non-functional API.

gtk/gtkfiledialog.c
gtk/gtkfiledialog.h
tests/testfiledialog.c

index 6f1a0dada2c60661dc1c954f8c4185c669b73be6..0c3a75ac7bb3c6dfe41d4463a5b02937b2d9cde1 100644 (file)
@@ -56,7 +56,6 @@ struct _GtkFileDialog
   unsigned int modal : 1;
 
   GListModel *filters;
-  GListModel *shortcut_folders;
   GtkFileFilter *default_filter;
   GFile *initial_folder;
   char *initial_name;
@@ -73,7 +72,6 @@ enum
   PROP_INITIAL_FOLDER,
   PROP_INITIAL_NAME,
   PROP_MODAL,
-  PROP_SHORTCUT_FOLDERS,
   PROP_TITLE,
 
   NUM_PROPERTIES
@@ -97,7 +95,6 @@ gtk_file_dialog_finalize (GObject *object)
   g_free (self->title);
   g_free (self->accept_label);
   g_clear_object (&self->filters);
-  g_clear_object (&self->shortcut_folders);
   g_clear_object (&self->default_filter);
   g_clear_object (&self->initial_folder);
   g_free (self->initial_name);
@@ -127,10 +124,6 @@ gtk_file_dialog_get_property (GObject      *object,
       g_value_set_object (value, self->filters);
       break;
 
-    case PROP_SHORTCUT_FOLDERS:
-      g_value_set_object (value, self->shortcut_folders);
-      break;
-
     case PROP_DEFAULT_FILTER:
       g_value_set_object (value, self->default_filter);
       break;
@@ -179,10 +172,6 @@ gtk_file_dialog_set_property (GObject      *object,
       gtk_file_dialog_set_filters (self, g_value_get_object (value));
       break;
 
-    case PROP_SHORTCUT_FOLDERS:
-      gtk_file_dialog_set_shortcut_folders (self, g_value_get_object (value));
-      break;
-
     case PROP_DEFAULT_FILTER:
       gtk_file_dialog_set_default_filter (self, g_value_get_object (value));
       break;
@@ -256,18 +245,6 @@ gtk_file_dialog_class_init (GtkFileDialogClass *class)
                            G_TYPE_LIST_MODEL,
                            G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS|G_PARAM_EXPLICIT_NOTIFY);
 
-  /**
-   * GtkFileDialog:shortcut-folders: (attributes org.gtk.Property.get=gtk_file_dialog_get_shortcut_folders org.gtk.Property.set=gtk_file_dialog_set_shortcut_folders)
-   *
-   * The list of shortcut folders.
-   *
-   * Since: 4.10
-   */
-  properties[PROP_SHORTCUT_FOLDERS] =
-      g_param_spec_object ("shortcut-folders", NULL, NULL,
-                           G_TYPE_LIST_MODEL,
-                           G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS|G_PARAM_EXPLICIT_NOTIFY);
-
   /**
    * GtkFileDialog:default-filter: (attributes org.gtk.Property.get=gtk_file_dialog_get_default_filter org.gtk.Property.set=gtk_file_dialog_set_default_filter)
    *
@@ -365,30 +342,6 @@ G_GNUC_END_IGNORE_DEPRECATIONS
     }
 }
 
-static void
-file_chooser_set_shortcut_folders (GtkFileChooser *chooser,
-                                   GListModel     *shortcut_folders)
-{
-  if (!shortcut_folders)
-    return;
-
-  for (unsigned int i = 0; i < g_list_model_get_n_items (shortcut_folders); i++)
-    {
-      GFile *folder = g_list_model_get_item (shortcut_folders, i);
-      GError *error = NULL;
-
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-      if (!gtk_file_chooser_add_shortcut_folder (chooser, folder, &error))
-        {
-          g_critical ("%s", error->message);
-          g_clear_error (&error);
-        }
-G_GNUC_END_IGNORE_DEPRECATIONS
-
-      g_object_unref (folder);
-    }
-}
-
 /* }}} */
 /* {{{ API: Constructor */
 
@@ -546,49 +499,6 @@ gtk_file_dialog_set_filters (GtkFileDialog *self,
   g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_FILTERS]);
 }
 
-/**
- * gtk_file_dialog_get_shortcut_folders:
- * @self: a `GtkFileDialog`
- *
- * Gets the shortcut folders that will be available to
- * the user in the file chooser dialog.
- *
- * Returns: (nullable) (transfer none): the shortcut
- *   folders, as a `GListModel` of `GFiles`
- *
- * Since: 4.10
- */
-GListModel *
-gtk_file_dialog_get_shortcut_folders (GtkFileDialog *self)
-{
-  g_return_val_if_fail (GTK_IS_FILE_DIALOG (self), NULL);
-
-  return self->shortcut_folders;
-}
-
-/**
- * gtk_file_dialog_set_shortcut_folders:
- * @self: a `GtkFileDialog`
- * @shortcut_folders: a `GListModel` of `GFiles`
- *
- * Sets the shortcut folders that will be available to
- * the user in the file chooser dialog.
- *
- * Since: 4.10
- */
-void
-gtk_file_dialog_set_shortcut_folders (GtkFileDialog *self,
-                                      GListModel    *shortcut_folders)
-{
-  g_return_if_fail (GTK_IS_FILE_DIALOG (self));
-  g_return_if_fail (G_IS_LIST_MODEL (shortcut_folders));
-
-  if (!g_set_object (&self->shortcut_folders, shortcut_folders))
-    return;
-
-  g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SHORTCUT_FOLDERS]);
-}
-
 /**
  * gtk_file_dialog_get_default_filter:
  * @self: a `GtkFileDialog`
@@ -956,7 +866,6 @@ create_file_chooser (GtkFileDialog        *self,
         }
     }
 
-  file_chooser_set_shortcut_folders (GTK_FILE_CHOOSER (chooser), self->shortcut_folders);
   if (self->initial_folder)
     gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (chooser), self->initial_folder, NULL);
   if (self->initial_file)
index 4865b0a38e03592cb3ee7320872eb74f9a712c1f..bb47830102cbccbb1e71783dc532390b745bdba3 100644 (file)
@@ -64,15 +64,6 @@ GDK_AVAILABLE_IN_4_10
 void             gtk_file_dialog_set_default_filter  (GtkFileDialog        *self,
                                                       GtkFileFilter        *filter);
 
-GDK_AVAILABLE_IN_4_10
-GListModel *     gtk_file_dialog_get_shortcut_folders
-                                                     (GtkFileDialog        *self);
-
-GDK_AVAILABLE_IN_4_10
-void             gtk_file_dialog_set_shortcut_folders
-                                                     (GtkFileDialog        *self,
-                                                      GListModel           *shortcut_folders);
-
 GDK_AVAILABLE_IN_4_10
 GFile *          gtk_file_dialog_get_initial_folder  (GtkFileDialog        *self);
 
index edc96793f5e666715db3b2f2c0ef8f5f00bb6edb..9f9b965dd3df16634ec50b12660aad10db19e9c9 100644 (file)
@@ -149,7 +149,6 @@ main (int argc, char *argv[])
   GCancellable *cancellable;
   char *title = NULL;
   gboolean modal = TRUE;
-  char **shortcut_folders = NULL;
   char *initial_folder = NULL;
   char *initial_name = NULL;
   char *initial_file = NULL;
@@ -158,7 +157,6 @@ main (int argc, char *argv[])
   GOptionEntry options[] = {
     { "title", 0, 0, G_OPTION_ARG_STRING, &title, "Title", "TITLE" },
     { "nonmodal", 0, G_OPTION_FLAG_REVERSE, G_OPTION_ARG_NONE, &modal, "Non-modal", NULL },
-    { "shortcut-folders", 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &shortcut_folders, "Shortcut folders", "FOLDER" },
     { "initial-folder", 0, 0, G_OPTION_ARG_FILENAME, &initial_folder, "Initial folder", "FOLDER" },
     { "initial-name", 0, 0, G_OPTION_ARG_STRING, &initial_name, "Initial name", "NAME" },
     { "initial-file", 0, 0, G_OPTION_ARG_FILENAME, &initial_file, "Initial file", "FILE" },
@@ -187,21 +185,6 @@ main (int argc, char *argv[])
   if (title)
     gtk_file_dialog_set_title (dialog, title);
   gtk_file_dialog_set_modal (dialog, modal);
-  if (shortcut_folders)
-    {
-      GListStore *store;
-
-      store = g_list_store_new (G_TYPE_FILE);
-      for (int i = 0; shortcut_folders[i]; i++)
-        {
-          GFile *file = g_file_new_for_commandline_arg (shortcut_folders[i]);
-
-          g_list_store_append (store, file);
-          g_object_unref (file);
-        }
-      gtk_file_dialog_set_shortcut_folders (dialog, G_LIST_MODEL (store));
-      g_object_unref (store);
-    }
   if (initial_folder)
     {
       GFile *file = g_file_new_for_commandline_arg (initial_folder);