[Xfce4-commits] <thunar:master> Use pspec notify in standard view.

Nick Schermer noreply at xfce.org
Sun Nov 11 01:36:04 CET 2012


Updating branch refs/heads/master
         to 776d74cb982cf971c29fb7c5490fe2d0850d8d3e (commit)
       from 23b35cc2efe1d0fd0801622cb9385753794f2f67 (commit)

commit 776d74cb982cf971c29fb7c5490fe2d0850d8d3e
Author: Nick Schermer <nick at xfce.org>
Date:   Sun Nov 11 00:03:25 2012 +0100

    Use pspec notify in standard view.

 thunar/thunar-standard-view.c |  108 +++++++++++++++++++++++++----------------
 1 files changed, 66 insertions(+), 42 deletions(-)

diff --git a/thunar/thunar-standard-view.c b/thunar/thunar-standard-view.c
index 4f24a1e..89fc96f 100644
--- a/thunar/thunar-standard-view.c
+++ b/thunar/thunar-standard-view.c
@@ -77,6 +77,7 @@ enum
   PROP_STATUSBAR_TEXT,
   PROP_UI_MANAGER,
   PROP_ZOOM_LEVEL,
+  N_PROPERTIES
 };
 
 /* Signal identifiers */
@@ -412,7 +413,8 @@ static const GtkTargetEntry drop_targets[] =
 
 
 
-static guint standard_view_signals[LAST_SIGNAL];
+static guint       standard_view_signals[LAST_SIGNAL];
+static GParamSpec *standard_view_props[N_PROPERTIES] = { NULL, };
 
 
 
@@ -429,6 +431,7 @@ thunar_standard_view_class_init (ThunarStandardViewClass *klass)
   GtkWidgetClass *gtkwidget_class;
   GtkBindingSet  *binding_set;
   GObjectClass   *gobject_class;
+  gpointer        g_iface;
 
   g_type_class_add_private (klass, sizeof (ThunarStandardViewPrivate));
 
@@ -454,53 +457,74 @@ thunar_standard_view_class_init (ThunarStandardViewClass *klass)
    *
    * Whether the folder associated with this view is
    * currently being loaded from the underlying media.
+   *
+   * Override property to set the property as writable
+   * for the binding.
    **/
-  g_object_class_install_property (gobject_class,
-                                   PROP_LOADING,
-                                   g_param_spec_override ("loading",
-                                                          g_param_spec_boolean ("loading",
-                                                                                "loading",
-                                                                                "loading",
-                                                                                FALSE,
-                                                                                EXO_PARAM_READWRITE)));
+  standard_view_props[PROP_LOADING] =
+      g_param_spec_override ("loading",
+                             g_param_spec_boolean ("loading",
+                                                   "loading",
+                                                   "loading",
+                                                   FALSE,
+                                                   EXO_PARAM_READWRITE));
 
   /**
    * ThunarStandardView:display-name:
    *
    * Display name of the current directory, for label text
    **/
-  g_object_class_install_property (gobject_class,
-                                   PROP_DISPLAY_NAME,
-                                   g_param_spec_string ("display-name",
-                                                        "display-name",
-                                                        "display-name",
-                                                        NULL,
-                                                        EXO_PARAM_READABLE));
+  standard_view_props[PROP_DISPLAY_NAME] =
+      g_param_spec_string ("display-name",
+                           "display-name",
+                           "display-name",
+                           NULL,
+                           EXO_PARAM_READABLE);
 
   /**
    * ThunarStandardView:parse-name:
    *
    * Full parsed name of the current directory, for label tooltip
    **/
-  g_object_class_install_property (gobject_class,
-                                   PROP_TOOLTIP_TEXT,
-                                   g_param_spec_string ("tooltip-text",
-                                                        "tooltip-text",
-                                                        "tooltip-text",
-                                                        NULL,
-                                                        EXO_PARAM_READABLE));
+  standard_view_props[PROP_TOOLTIP_TEXT] =
+      g_param_spec_string ("tooltip-text",
+                           "tooltip-text",
+                           "tooltip-text",
+                           NULL,
+                           EXO_PARAM_READABLE);
 
   /* override ThunarComponent's properties */
-  g_object_class_override_property (gobject_class, PROP_SELECTED_FILES, "selected-files");
-  g_object_class_override_property (gobject_class, PROP_UI_MANAGER, "ui-manager");
+  g_iface = g_type_default_interface_peek (THUNAR_TYPE_COMPONENT);
+  standard_view_props[PROP_SELECTED_FILES] =
+      g_param_spec_override ("selected-files",
+                             g_object_interface_find_property (g_iface, "selected-files"));
+
+  standard_view_props[PROP_UI_MANAGER] =
+      g_param_spec_override ("ui-manager",
+                             g_object_interface_find_property (g_iface, "ui-manager"));
 
   /* override ThunarNavigator's properties */
-  g_object_class_override_property (gobject_class, PROP_CURRENT_DIRECTORY, "current-directory");
+  g_iface = g_type_default_interface_peek (THUNAR_TYPE_NAVIGATOR);
+  standard_view_props[PROP_CURRENT_DIRECTORY] =
+      g_param_spec_override ("current-directory",
+                             g_object_interface_find_property (g_iface, "current-directory"));
 
   /* override ThunarView's properties */
-  g_object_class_override_property (gobject_class, PROP_STATUSBAR_TEXT, "statusbar-text");
-  g_object_class_override_property (gobject_class, PROP_SHOW_HIDDEN, "show-hidden");
-  g_object_class_override_property (gobject_class, PROP_ZOOM_LEVEL, "zoom-level");
+  g_iface = g_type_default_interface_peek (THUNAR_TYPE_VIEW);
+  standard_view_props[PROP_STATUSBAR_TEXT] =
+      g_param_spec_override ("statusbar-text",
+                             g_object_interface_find_property (g_iface, "statusbar-text"));
+
+  standard_view_props[PROP_SHOW_HIDDEN] =
+      g_param_spec_override ("show-hidden",
+                             g_object_interface_find_property (g_iface, "show-hidden"));
+
+  standard_view_props[PROP_ZOOM_LEVEL] =
+      g_param_spec_override ("zoom-level",
+                             g_object_interface_find_property (g_iface, "zoom-level"));
+
+  /* install all properties */
+  g_object_class_install_properties (gobject_class, N_PROPERTIES, standard_view_props);
 
   /**
    * ThunarStandardView::start-opn-location:
@@ -1226,7 +1250,7 @@ thunar_standard_view_set_ui_manager (ThunarComponent *component,
     }
 
   /* let others know that we have a new manager */
-  g_object_notify (G_OBJECT (standard_view), "ui-manager");
+  g_object_notify_by_pspec (G_OBJECT (standard_view), standard_view_props[PROP_UI_MANAGER]);
 }
 
 
@@ -1436,11 +1460,11 @@ thunar_standard_view_set_current_directory (ThunarNavigator *navigator,
   /* NOTE: quickly after this we always trigger a size allocate wich will handle this */
 
   /* notify all listeners about the new/old current directory */
-  g_object_notify (G_OBJECT (standard_view), "current-directory");
+  g_object_notify_by_pspec (G_OBJECT (standard_view), standard_view_props[PROP_CURRENT_DIRECTORY]);
 
   /* update tab label and tooltip */
-  g_object_notify (G_OBJECT (standard_view), "display-name");
-  g_object_notify (G_OBJECT (standard_view), "tooltip-text");
+  g_object_notify_by_pspec (G_OBJECT (standard_view), standard_view_props[PROP_DISPLAY_NAME]);
+  g_object_notify_by_pspec (G_OBJECT (standard_view), standard_view_props[PROP_TOOLTIP_TEXT]);
 
   /* restore the selection from the history */
   thunar_standard_view_restore_selection_from_history (standard_view);
@@ -1558,8 +1582,8 @@ thunar_standard_view_set_loading (ThunarStandardView *standard_view,
 
   /* notify listeners */
   g_object_freeze_notify (G_OBJECT (standard_view));
-  g_object_notify (G_OBJECT (standard_view), "loading");
-  g_object_notify (G_OBJECT (standard_view), "statusbar-text");
+  g_object_notify_by_pspec (G_OBJECT (standard_view), standard_view_props[PROP_LOADING]);
+  g_object_notify_by_pspec (G_OBJECT (standard_view), standard_view_props[PROP_STATUSBAR_TEXT]);
   g_object_thaw_notify (G_OBJECT (standard_view));
 }
 
@@ -1629,7 +1653,7 @@ thunar_standard_view_set_zoom_level (ThunarView     *view,
   if (G_LIKELY (standard_view->priv->zoom_level != zoom_level))
     {
       standard_view->priv->zoom_level = zoom_level;
-      g_object_notify (G_OBJECT (standard_view), "zoom-level");
+      g_object_notify_by_pspec (G_OBJECT (standard_view), standard_view_props[PROP_ZOOM_LEVEL]);
     }
 }
 
@@ -2058,7 +2082,7 @@ thunar_standard_view_update_statusbar_text (ThunarStandardView *standard_view)
   standard_view->statusbar_text = NULL;
 
   /* tell everybody that the statusbar text may have changed */
-  g_object_notify (G_OBJECT (standard_view), "statusbar-text");
+  g_object_notify_by_pspec (G_OBJECT (standard_view), standard_view_props[PROP_STATUSBAR_TEXT]);
 }
 
 
@@ -2153,8 +2177,8 @@ thunar_standard_view_current_directory_changed (ThunarFile         *current_dire
   _thunar_return_if_fail (standard_view->priv->current_directory == current_directory);
 
   /* update tab label and tooltip */
-  g_object_notify (G_OBJECT (standard_view), "display-name");
-  g_object_notify (G_OBJECT (standard_view), "tooltip-text");
+  g_object_notify_by_pspec (G_OBJECT (standard_view), standard_view_props[PROP_DISPLAY_NAME]);
+  g_object_notify_by_pspec (G_OBJECT (standard_view), standard_view_props[PROP_TOOLTIP_TEXT]);
 }
 
 
@@ -3635,8 +3659,8 @@ thunar_standard_view_loading_unbound (gpointer user_data)
     {
       standard_view->loading = FALSE;
       g_object_freeze_notify (G_OBJECT (standard_view));
-      g_object_notify (G_OBJECT (standard_view), "loading");
-      g_object_notify (G_OBJECT (standard_view), "statusbar-text");
+      g_object_notify_by_pspec (G_OBJECT (standard_view), standard_view_props[PROP_LOADING]);
+      g_object_notify_by_pspec (G_OBJECT (standard_view), standard_view_props[PROP_STATUSBAR_TEXT]);
       g_object_thaw_notify (G_OBJECT (standard_view));
     }
 }
@@ -4165,6 +4189,6 @@ thunar_standard_view_selection_changed (ThunarStandardView *standard_view)
   thunar_standard_view_update_statusbar_text (standard_view);
 
   /* emit notification for "selected-files" */
-  g_object_notify (G_OBJECT (standard_view), "selected-files");
+  g_object_notify_by_pspec (G_OBJECT (standard_view), standard_view_props[PROP_SELECTED_FILES]);
 }
 


More information about the Xfce4-commits mailing list