[gnome-photos] view-container: Simplify signal handlers tracking



commit 9a9f85dfeffcc8a49162a6d35036ebcc4752749b
Author: Emanuele Aina <emanuele aina collabora com>
Date:   Tue Jun 25 14:16:37 2013 +0200

    view-container: Simplify signal handlers tracking
    
    Use g_signal_connect_object() to make sure that signals are disconnected
    when the toolbar is destroyed and use g_signal_handlers_disconnect_by_func()
    otherwise.
    
    This allows us to get rid of all the signal id member fields.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=703054

 src/photos-view-container.c |   49 +++++++++++++++----------------------------
 1 files changed, 17 insertions(+), 32 deletions(-)
---
diff --git a/src/photos-view-container.c b/src/photos-view-container.c
index 8969346..47baadd 100644
--- a/src/photos-view-container.c
+++ b/src/photos-view-container.c
@@ -52,9 +52,6 @@ struct _PhotosViewContainerPrivate
   PhotosTrackerController *trk_cntrlr;
   PhotosWindowMode mode;
   gboolean disposed;
-  gulong adjustment_changed_id;
-  gulong adjustment_value_id;
-  gulong scrollbar_visible_id;
 };
 
 enum
@@ -109,20 +106,23 @@ photos_view_container_connect_view (PhotosViewContainer *self)
   GtkWidget *vscrollbar;
 
   vadjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (priv->view));
-  priv->adjustment_changed_id = g_signal_connect_swapped (vadjustment,
-                                                          "changed",
-                                                          G_CALLBACK (photos_view_container_view_changed),
-                                                          self);
-  priv->adjustment_value_id = g_signal_connect_swapped (vadjustment,
-                                                        "value-changed",
-                                                        G_CALLBACK (photos_view_container_view_changed),
-                                                        self);
+  g_signal_connect_object (vadjustment,
+                           "changed",
+                           G_CALLBACK (photos_view_container_view_changed),
+                           self,
+                           G_CONNECT_SWAPPED);
+  g_signal_connect_object (vadjustment,
+                           "value-changed",
+                           G_CALLBACK (photos_view_container_view_changed),
+                           self,
+                           G_CONNECT_SWAPPED);
 
   vscrollbar = gtk_scrolled_window_get_vscrollbar (GTK_SCROLLED_WINDOW (priv->view));
-  priv->scrollbar_visible_id = g_signal_connect_swapped (vscrollbar,
-                                                         "notify::visible",
-                                                         G_CALLBACK (photos_view_container_view_changed),
-                                                         self);
+  g_signal_connect_object (vscrollbar,
+                           "notify::visible",
+                           G_CALLBACK (photos_view_container_view_changed),
+                           self,
+                           G_CONNECT_SWAPPED);
 
   photos_view_container_view_changed (self);
 }
@@ -138,23 +138,8 @@ photos_view_container_disconnect_view (PhotosViewContainer *self)
   vadjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (priv->view));
   vscrollbar = gtk_scrolled_window_get_vscrollbar (GTK_SCROLLED_WINDOW (priv->view));
 
-  if (priv->adjustment_changed_id != 0)
-    {
-      g_signal_handler_disconnect (vadjustment, priv->adjustment_changed_id);
-      priv->adjustment_changed_id = 0;
-    }
-
-  if (priv->adjustment_value_id != 0)
-    {
-      g_signal_handler_disconnect (vadjustment, priv->adjustment_value_id);
-      priv->adjustment_value_id = 0;
-    }
-
-  if (priv->scrollbar_visible_id != 0)
-    {
-      g_signal_handler_disconnect (vscrollbar, priv->scrollbar_visible_id);
-      priv->scrollbar_visible_id = 0;
-    }
+  g_signal_handlers_disconnect_by_func (vadjustment, photos_view_container_view_changed, self);
+  g_signal_handlers_disconnect_by_func (vscrollbar, photos_view_container_view_changed, self);
 }
 
 


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