[gtk/file-chooser-api-cleanups: 34/34] filechooser: Add a readonly :shortcut-folders property



commit e7b773b03122ac2e36a90bf836f5940e051e68e9
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Jul 6 11:03:02 2020 -0400

    filechooser: Add a readonly :shortcut-folders property
    
    This makes the shortcut folders list accessible in the
    the inspector.

 gtk/gtkfilechooser.c       | 16 ++++++++++++++++
 gtk/gtkfilechooserbutton.c |  1 +
 gtk/gtkfilechooserutils.c  |  3 +++
 gtk/gtkfilechooserutils.h  |  3 ++-
 gtk/gtkfilechooserwidget.c | 10 ++++++++++
 5 files changed, 32 insertions(+), 1 deletion(-)
---
diff --git a/gtk/gtkfilechooser.c b/gtk/gtkfilechooser.c
index 0c42fb8f7b..b77652bd1c 100644
--- a/gtk/gtkfilechooser.c
+++ b/gtk/gtkfilechooser.c
@@ -184,6 +184,22 @@ gtk_file_chooser_default_init (GtkFileChooserInterface *iface)
                                                           G_TYPE_LIST_MODEL,
                                                           GTK_PARAM_READABLE));
 
+  /**
+   * GtkFileChooser:shortcut-folders:
+   *
+   * A #GListModel containing the shortcut folders that have been
+   * added with gtk_file_chooser_add_shortcut().
+   *
+   * The returned object should not be modified. It may
+   * or may not be updated for later changes.
+   */
+  g_object_interface_install_property (iface,
+                                       g_param_spec_object ("shortcut-folders",
+                                                          P_("Shortcut Folders"),
+                                                          P_("List model of shortcut folders"),
+                                                          G_TYPE_LIST_MODEL,
+                                                          GTK_PARAM_READABLE));
+
   /**
    * GtkFileChooser:create-folders:
    * 
diff --git a/gtk/gtkfilechooserbutton.c b/gtk/gtkfilechooserbutton.c
index b735699a75..97bd4eab90 100644
--- a/gtk/gtkfilechooserbutton.c
+++ b/gtk/gtkfilechooserbutton.c
@@ -1036,6 +1036,7 @@ gtk_file_chooser_button_get_property (GObject    *object,
     case GTK_FILE_CHOOSER_PROP_SELECT_MULTIPLE:
     case GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS:
     case GTK_FILE_CHOOSER_PROP_FILTERS:
+    case GTK_FILE_CHOOSER_PROP_SHORTCUT_FOLDERS:
       g_object_get_property (G_OBJECT (button->chooser), pspec->name, value);
       break;
 
diff --git a/gtk/gtkfilechooserutils.c b/gtk/gtkfilechooserutils.c
index e3fb636731..d41d9513cb 100644
--- a/gtk/gtkfilechooserutils.c
+++ b/gtk/gtkfilechooserutils.c
@@ -106,6 +106,9 @@ _gtk_file_chooser_install_properties (GObjectClass *klass)
   g_object_class_override_property (klass,
                                     GTK_FILE_CHOOSER_PROP_FILTERS,
                                     "filters");
+  g_object_class_override_property (klass,
+                                    GTK_FILE_CHOOSER_PROP_SHORTCUT_FOLDERS,
+                                    "shortcut-folders");
 }
 
 /**
diff --git a/gtk/gtkfilechooserutils.h b/gtk/gtkfilechooserutils.h
index 5c5494a0ce..3ca736c996 100644
--- a/gtk/gtkfilechooserutils.h
+++ b/gtk/gtkfilechooserutils.h
@@ -33,7 +33,8 @@ typedef enum {
   GTK_FILE_CHOOSER_PROP_SELECT_MULTIPLE,
   GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS,
   GTK_FILE_CHOOSER_PROP_FILTERS,
-  GTK_FILE_CHOOSER_PROP_LAST                   = GTK_FILE_CHOOSER_PROP_FILTERS
+  GTK_FILE_CHOOSER_PROP_SHORTCUT_FOLDERS,
+  GTK_FILE_CHOOSER_PROP_LAST                   = GTK_FILE_CHOOSER_PROP_SHORTCUT_FOLDERS
 } GtkFileChooserProp;
 
 void _gtk_file_chooser_install_properties (GObjectClass *klass);
diff --git a/gtk/gtkfilechooserwidget.c b/gtk/gtkfilechooserwidget.c
index e9fb6cbcab..3551463c23 100644
--- a/gtk/gtkfilechooserwidget.c
+++ b/gtk/gtkfilechooserwidget.c
@@ -3076,6 +3076,10 @@ gtk_file_chooser_widget_get_property (GObject    *object,
       g_value_set_object (value, impl->filters);
       break;
 
+    case GTK_FILE_CHOOSER_PROP_SHORTCUT_FOLDERS:
+      g_value_take_object (value, gtk_file_chooser_get_shortcut_folders (GTK_FILE_CHOOSER (impl)));
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -5625,6 +5629,9 @@ gtk_file_chooser_widget_add_shortcut_folder (GtkFileChooser  *chooser,
   GtkFileChooserWidget *impl = GTK_FILE_CHOOSER_WIDGET (chooser);
 
   gtk_places_sidebar_add_shortcut (GTK_PLACES_SIDEBAR (impl->places_sidebar), file);
+
+  g_object_notify (G_OBJECT (chooser), "shortcut-folders");
+
   return TRUE;
 }
 
@@ -5636,6 +5643,9 @@ gtk_file_chooser_widget_remove_shortcut_folder (GtkFileChooser  *chooser,
   GtkFileChooserWidget *impl = GTK_FILE_CHOOSER_WIDGET (chooser);
 
   gtk_places_sidebar_remove_shortcut (GTK_PLACES_SIDEBAR (impl->places_sidebar), file);
+
+  g_object_notify (G_OBJECT (chooser), "shortcut-folders");
+
   return TRUE;
 }
 


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