]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkfilechooserutils.c
Use the less efficient g_object_interface_find_property () instead of the
[~andy/gtk] / gtk / gtkfilechooserutils.c
index 653f196a8768e4c22be8a7abbf9f8915c22fa3ee..2b41e36696eb6fa3ea93562f46fc197e023aefae 100644 (file)
  * Boston, MA 02111-1307, USA.
  */
 
+#include <config.h>
 #include "gtkfilechooserutils.h"
 #include "gtkfilechooser.h"
 #include "gtkfilesystem.h"
 #include "gtktypebuiltins.h"
 
-static void           delegate_set_current_folder     (GtkFileChooser    *chooser,
-                                                      const GtkFilePath *path);
+static gboolean       delegate_set_current_folder     (GtkFileChooser    *chooser,
+                                                      const GtkFilePath *path,
+                                                      GError           **error);
 static GtkFilePath *  delegate_get_current_folder     (GtkFileChooser    *chooser);
 static void           delegate_set_current_name       (GtkFileChooser    *chooser,
                                                       const gchar       *name);
-static void           delegate_select_path            (GtkFileChooser    *chooser,
-                                                      const GtkFilePath *path);
+static gboolean       delegate_select_path            (GtkFileChooser    *chooser,
+                                                      const GtkFilePath *path,
+                                                      GError           **error);
 static void           delegate_unselect_path          (GtkFileChooser    *chooser,
                                                       const GtkFilePath *path);
 static void           delegate_select_all             (GtkFileChooser    *chooser);
@@ -65,7 +68,7 @@ static void           delegate_file_activated         (GtkFileChooser    *choose
 /**
  * _gtk_file_chooser_install_properties:
  * @klass: the class structure for a type deriving from #GObject
- * 
+ *
  * Installs the necessary properties for a class implementing
  * #GtkFileChooser. A #GtkParamSpecOverride property is installed
  * for each property, using the values from the #GtkFileChooserProp
@@ -111,7 +114,7 @@ _gtk_file_chooser_install_properties (GObjectClass *klass)
 /**
  * _gtk_file_chooser_delegate_iface_init:
  * @iface: a #GtkFileChoserIface structure
- * 
+ *
  * An interface-initialization function for use in cases where
  * an object is simply delegating the methods, signals of
  * the #GtkFileChooser interface to another object.
@@ -142,13 +145,13 @@ _gtk_file_chooser_delegate_iface_init (GtkFileChooserIface *iface)
 
 /**
  * _gtk_file_chooser_set_delegate:
- * @receiver: a GOobject implementing #GtkFileChooser
- * @delegate: another GObject implementing #GtkFileChooser
+ * @receiver: a #GObject implementing #GtkFileChooser
+ * @delegate: another #GObject implementing #GtkFileChooser
  *
  * Establishes that calls on @receiver for #GtkFileChooser
  * methods should be delegated to @delegate, and that
  * #GtkFileChooser signals emitted on @delegate should be
- * forwarded to @receiver. Must be used in confunction with
+ * forwarded to @receiver. Must be used in conjunction with
  * _gtk_file_chooser_delegate_iface_init().
  **/
 void
@@ -157,9 +160,8 @@ _gtk_file_chooser_set_delegate (GtkFileChooser *receiver,
 {
   g_return_if_fail (GTK_IS_FILE_CHOOSER (receiver));
   g_return_if_fail (GTK_IS_FILE_CHOOSER (delegate));
-  
-  g_object_set_data (G_OBJECT (receiver), "gtk-file-chooser-delegate", delegate);
 
+  g_object_set_data (G_OBJECT (receiver), "gtk-file-chooser-delegate", delegate);
   g_signal_connect (delegate, "notify",
                    G_CALLBACK (delegate_notify), receiver);
   g_signal_connect (delegate, "current-folder-changed",
@@ -178,11 +180,12 @@ get_delegate (GtkFileChooser *receiver)
   return g_object_get_data (G_OBJECT (receiver), "gtk-file-chooser-delegate");
 }
 
-static void
+static gboolean
 delegate_select_path (GtkFileChooser    *chooser,
-                     const GtkFilePath *path)
+                     const GtkFilePath *path,
+                     GError           **error)
 {
-  _gtk_file_chooser_select_path (get_delegate (chooser), path);
+  return _gtk_file_chooser_select_path (get_delegate (chooser), path, error);
 }
 
 static void
@@ -264,11 +267,12 @@ delegate_list_shortcut_folders (GtkFileChooser *chooser)
   return gtk_file_chooser_list_shortcut_folders (get_delegate (chooser));
 }
 
-static void
+static gboolean
 delegate_set_current_folder (GtkFileChooser    *chooser,
-                            const GtkFilePath *path)
+                            const GtkFilePath *path,
+                            GError           **error)
 {
-  _gtk_file_chooser_set_current_folder_path (get_delegate (chooser), path);
+  return _gtk_file_chooser_set_current_folder_path (get_delegate (chooser), path, error);
 }
 
 static GtkFilePath *
@@ -289,11 +293,12 @@ delegate_notify (GObject    *object,
                 GParamSpec *pspec,
                 gpointer    data)
 {
-  if (pspec->param_id >= GTK_FILE_CHOOSER_PROP_FIRST &&
-      pspec->param_id <= GTK_FILE_CHOOSER_PROP_LAST)
-    {
-      g_object_notify (data, pspec->name);
-    }
+  gpointer iface;
+
+  iface = g_type_interface_peek (g_type_class_peek (G_OBJECT_TYPE (object)),
+                                gtk_file_chooser_get_type ());
+  if (g_object_interface_find_property (iface, pspec->name))
+    g_object_notify (data, pspec->name);
 }
 
 static void