[gnome-calendar/mcatanzaro/#426: 2/2] Use more g_signal_connect_object()



commit 18ae67cb592b385d66cfe83f8cc794bcabcd949e
Author: Michael Catanzaro <mcatanzaro gnome org>
Date:   Sat Sep 14 11:41:14 2019 -0500

    Use more g_signal_connect_object()
    
    Most of these are probably paranoid, not bugs. I haven't done an
    exhaustive review to see what really needs it: that would be
    time-consuming and require significant familiarity with the Calendar
    codebase. This was just a quick check. Anyway, I vote for paranoid
    when it comes to using g_signal_connect() regardless. It's dangerous,
    and there's no reason to ever leave a signal connected after the user
    data object has been destroyed.
    
    Fixes #423

 src/core/gcal-clock.c                             |  9 +++++----
 src/core/gcal-manager.c                           | 17 +++++++++--------
 src/core/gcal-shell-search-provider.c             | 12 ++++++------
 src/gui/calendar-management/gcal-calendars-page.c |  9 +++++----
 src/gui/gcal-calendar-popover.c                   |  8 ++++----
 src/gui/gcal-date-chooser-day.c                   |  9 +++++----
 src/gui/gcal-date-chooser.c                       |  9 +++++----
 src/gui/gcal-edit-dialog.c                        | 20 +++++++++++---------
 src/gui/gcal-event-widget.c                       | 20 +++++++++++---------
 src/views/gcal-month-popover.c                    |  9 +++++----
 src/views/gcal-month-view.c                       |  8 ++++----
 src/views/gcal-week-header.c                      |  2 +-
 src/views/gcal-week-view.c                        |  9 +++++----
 src/views/gcal-year-view.c                        |  4 ++--
 src/weather/gcal-weather-service.c                | 18 ++++++++++--------
 15 files changed, 88 insertions(+), 75 deletions(-)
---
diff --git a/src/core/gcal-clock.c b/src/core/gcal-clock.c
index affeb4fb..0d8869b4 100644
--- a/src/core/gcal-clock.c
+++ b/src/core/gcal-clock.c
@@ -173,10 +173,11 @@ login_proxy_acquired_cb (GObject      *source,
       return;
     }
 
-  g_signal_connect (self->proxy,
-                    "g-signal",
-                    G_CALLBACK (logind_signal_received_cb),
-                    self);
+  g_signal_connect_object (self->proxy,
+                           "g-signal",
+                           G_CALLBACK (logind_signal_received_cb),
+                           self,
+                           0);
 
   g_debug ("Successfully acquired logind DBus proxy");
 }
diff --git a/src/core/gcal-manager.c b/src/core/gcal-manager.c
index 3b073581..7f051632 100644
--- a/src/core/gcal-manager.c
+++ b/src/core/gcal-manager.c
@@ -883,10 +883,11 @@ gcal_manager_setup_shell_search (GcalManager             *self,
     return;
 
   self->shell_search_data_model = e_cal_data_model_new (gcal_thread_submit_job);
-  g_signal_connect_swapped (self->shell_search_data_model,
-                            "view-state-changed",
-                            G_CALLBACK (model_state_changed),
-                            self);
+  g_signal_connect_object (self->shell_search_data_model,
+                           "view-state-changed",
+                           G_CALLBACK (model_state_changed),
+                           self,
+                           G_CONNECT_SWAPPED);
 
   e_cal_data_model_set_expand_recurrences (self->shell_search_data_model, TRUE);
   e_cal_data_model_set_timezone (self->shell_search_data_model, e_cal_util_get_system_timezone ());
@@ -1608,13 +1609,13 @@ gcal_manager_startup (GcalManager *self)
 
   /* The eds_credentials_prompter responses to REQUIRED and REJECTED reasons,
      the SSL_FAILED should be handled elsewhere. */
-  g_signal_connect (self->source_registry, "credentials-required", G_CALLBACK 
(source_credentials_required_cb), self);
+  g_signal_connect_object (self->source_registry, "credentials-required", G_CALLBACK 
(source_credentials_required_cb), self, 0);
 
   e_credentials_prompter_process_awaiting_credentials (self->credentials_prompter);
 
-  g_signal_connect_swapped (self->source_registry, "source-added", G_CALLBACK (load_source), self);
-  g_signal_connect_swapped (self->source_registry, "source-removed", G_CALLBACK (remove_source), self);
-  g_signal_connect_swapped (self->source_registry, "source-changed", G_CALLBACK (source_changed), self);
+  g_signal_connect_object (self->source_registry, "source-added", G_CALLBACK (load_source), self, 
G_CONNECT_SWAPPED);
+  g_signal_connect_object (self->source_registry, "source-removed", G_CALLBACK (remove_source), self, 
G_CONNECT_SWAPPED);
+  g_signal_connect_object (self->source_registry, "source-changed", G_CALLBACK (source_changed), self, 
G_CONNECT_SWAPPED);
 
   /* create data model */
   self->e_data_model = e_cal_data_model_new (gcal_thread_submit_job);
diff --git a/src/core/gcal-shell-search-provider.c b/src/core/gcal-shell-search-provider.c
index 7e8edb22..1ab0390a 100644
--- a/src/core/gcal-shell-search-provider.c
+++ b/src/core/gcal-shell-search-provider.c
@@ -428,7 +428,7 @@ gcal_shell_search_provider_set_property (GObject      *object,
           GcalManager *manager = gcal_context_get_manager (self->context);
 
           gcal_manager_setup_shell_search (manager, E_CAL_DATA_MODEL_SUBSCRIBER (self));
-          g_signal_connect_swapped (manager, "query-completed", G_CALLBACK (query_completed_cb), self);
+          g_signal_connect_object (manager, "query-completed", G_CALLBACK (query_completed_cb), self, 
G_CONNECT_SWAPPED);
 
           g_object_notify_by_pspec (object, properties[PROP_CONTEXT]);
         }
@@ -463,11 +463,11 @@ gcal_shell_search_provider_init (GcalShellSearchProvider *self)
   self->events = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
   self->skel = gcal_shell_search_provider2_skeleton_new ();
 
-  g_signal_connect_swapped (self->skel, "handle-get-initial-result-set", G_CALLBACK 
(get_initial_result_set_cb), self);
-  g_signal_connect_swapped (self->skel, "handle-get-subsearch-result-set", G_CALLBACK 
(get_subsearch_result_set_cb), self);
-  g_signal_connect_swapped (self->skel, "handle-get-result-metas", G_CALLBACK (get_result_metas_cb), self);
-  g_signal_connect_swapped (self->skel, "handle-activate-result", G_CALLBACK (activate_result_cb), self);
-  g_signal_connect_swapped (self->skel, "handle-launch-search", G_CALLBACK (launch_search_cb), self);
+  g_signal_connect_object (self->skel, "handle-get-initial-result-set", G_CALLBACK 
(get_initial_result_set_cb), self, G_CONNECT_SWAPPED);
+  g_signal_connect_object (self->skel, "handle-get-subsearch-result-set", G_CALLBACK 
(get_subsearch_result_set_cb), self, G_CONNECT_SWAPPED);
+  g_signal_connect_object (self->skel, "handle-get-result-metas", G_CALLBACK (get_result_metas_cb), self, 
G_CONNECT_SWAPPED);
+  g_signal_connect_object (self->skel, "handle-activate-result", G_CALLBACK (activate_result_cb), self, 
G_CONNECT_SWAPPED);
+  g_signal_connect_object (self->skel, "handle-launch-search", G_CALLBACK (launch_search_cb), self, 
G_CONNECT_SWAPPED);
 }
 
 GcalShellSearchProvider*
diff --git a/src/gui/calendar-management/gcal-calendars-page.c 
b/src/gui/calendar-management/gcal-calendars-page.c
index 3a337359..a3fd1065 100644
--- a/src/gui/calendar-management/gcal-calendars-page.c
+++ b/src/gui/calendar-management/gcal-calendars-page.c
@@ -103,10 +103,11 @@ make_calendar_row (GcalCalendarsPage *self,
   top_label = GTK_WIDGET (gtk_builder_get_object (builder, "title"));
   gtk_label_set_label (GTK_LABEL (top_label), gcal_calendar_get_name (calendar));
   g_object_bind_property (calendar, "name", top_label, "label", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
-  g_signal_connect_swapped (calendar,
-                            "notify::name",
-                            G_CALLBACK (gtk_list_box_invalidate_sort),
-                            self->listbox);
+  g_signal_connect_object (calendar,
+                           "notify::name",
+                           G_CALLBACK (gtk_list_box_invalidate_sort),
+                           self->listbox,
+                           G_CONNECT_SWAPPED);
 
   g_signal_connect_object (calendar,
                            "notify::color",
diff --git a/src/gui/gcal-calendar-popover.c b/src/gui/gcal-calendar-popover.c
index 234ce60d..079f0bf7 100644
--- a/src/gui/gcal-calendar-popover.c
+++ b/src/gui/gcal-calendar-popover.c
@@ -317,10 +317,10 @@ gcal_calendar_popover_set_property (GObject      *object,
                                 "sensitive",
                                 G_BINDING_INVERT_BOOLEAN | G_BINDING_SYNC_CREATE);
 
-        g_signal_connect (manager, "calendar-added", G_CALLBACK (on_manager_calendar_added_cb), object);
-        g_signal_connect (manager, "calendar-removed", G_CALLBACK (on_manager_calendar_removed_cb), object);
-        g_signal_connect (manager, "calendar-changed", G_CALLBACK (on_manager_calendar_changed_cb), object);
-        g_signal_connect (manager, "notify::synchronizing", G_CALLBACK 
(on_manager_synchronizing_changed_cb), object);
+        g_signal_connect_object (manager, "calendar-added", G_CALLBACK (on_manager_calendar_added_cb), 
object, 0);
+        g_signal_connect_object (manager, "calendar-removed", G_CALLBACK (on_manager_calendar_removed_cb), 
object, 0);
+        g_signal_connect_object (manager, "calendar-changed", G_CALLBACK (on_manager_calendar_changed_cb), 
object, 0);
+        g_signal_connect_object (manager, "notify::synchronizing", G_CALLBACK 
(on_manager_synchronizing_changed_cb), object, 0);
       }
       break;
 
diff --git a/src/gui/gcal-date-chooser-day.c b/src/gui/gcal-date-chooser-day.c
index 7886d8ac..6f819c06 100644
--- a/src/gui/gcal-date-chooser-day.c
+++ b/src/gui/gcal-date-chooser-day.c
@@ -392,10 +392,11 @@ gcal_date_chooser_day_init (GcalDateChooserDay *self)
   self->multipress_gesture = gtk_gesture_multi_press_new (widget);
   gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (self->multipress_gesture), 0);
 
-  g_signal_connect (self->multipress_gesture,
-                    "pressed",
-                    G_CALLBACK (day_pressed),
-                    self);
+  g_signal_connect_object (self->multipress_gesture,
+                           "pressed",
+                           G_CALLBACK (day_pressed),
+                           self,
+                           0);
 }
 
 GtkWidget*
diff --git a/src/gui/gcal-date-chooser.c b/src/gui/gcal-date-chooser.c
index b51c25b6..9b568cbe 100644
--- a/src/gui/gcal-date-chooser.c
+++ b/src/gui/gcal-date-chooser.c
@@ -623,10 +623,11 @@ gcal_date_chooser_init (GcalDateChooser *self)
         {
           self->days[row][col] = gcal_date_chooser_day_new ();
 
-          g_signal_connect (self->days[row][col],
-                            "selected",
-                            G_CALLBACK (day_selected_cb),
-                            self);
+          g_signal_connect_object (self->days[row][col],
+                                   "selected",
+                                   G_CALLBACK (day_selected_cb),
+                                   self,
+                                   0);
 
           gtk_widget_show (self->days[row][col]);
           gtk_grid_attach (GTK_GRID (self->day_grid), self->days[row][col], col, row, 1, 1);
diff --git a/src/gui/gcal-edit-dialog.c b/src/gui/gcal-edit-dialog.c
index 4123d0fa..b66047a8 100644
--- a/src/gui/gcal-edit-dialog.c
+++ b/src/gui/gcal-edit-dialog.c
@@ -586,15 +586,16 @@ create_row_for_alarm (GcalEvent          *event,
                                 has_sound ? "audio-volume-high-symbolic" : "audio-volume-muted-symbolic",
                                 GTK_ICON_SIZE_BUTTON);
 
-  g_signal_connect (volume_button, "toggled", G_CALLBACK (on_sound_toggle_changed_cb), row);
+  g_signal_connect_object (volume_button, "toggled", G_CALLBACK (on_sound_toggle_changed_cb), row, 0);
 
   /* Remove button */
   remove_button = WID ("remove_button");
 
-  g_signal_connect (remove_button,
-                    "clicked",
-                    G_CALLBACK (on_remove_alarm_button_clicked),
-                    row);
+  g_signal_connect_object (remove_button,
+                           "clicked",
+                           G_CALLBACK (on_remove_alarm_button_clicked),
+                           row,
+                           0);
 
   main_box = WID ("main_box");
   gtk_container_add (GTK_CONTAINER (row), main_box);
@@ -1155,10 +1156,11 @@ gcal_edit_dialog_constructed (GObject* object)
                                   G_ACTION_GROUP (self->action_group));
 
   /* Watch the main window and adapt the maximum size */
-  g_signal_connect_swapped (gtk_window_get_transient_for (GTK_WINDOW (self)),
-                            "size-allocate",
-                            G_CALLBACK (transient_size_allocate_cb),
-                            self);
+  g_signal_connect_object (gtk_window_get_transient_for (GTK_WINDOW (self)),
+                           "size-allocate",
+                           G_CALLBACK (transient_size_allocate_cb),
+                           self,
+                           G_CONNECT_SWAPPED);
 }
 
 static void
diff --git a/src/gui/gcal-event-widget.c b/src/gui/gcal-event-widget.c
index dc830114..77992251 100644
--- a/src/gui/gcal-event-widget.c
+++ b/src/gui/gcal-event-widget.c
@@ -498,15 +498,17 @@ gcal_event_widget_set_event_internal (GcalEventWidget *self,
   /* Update color */
   update_color (self);
 
-  g_signal_connect_swapped (event,
-                            "notify::color",
-                            G_CALLBACK (update_color),
-                            self);
-
-  g_signal_connect_swapped (event,
-                            "notify::summary",
-                            G_CALLBACK (gtk_widget_queue_draw),
-                            self);
+  g_signal_connect_object (event,
+                           "notify::color",
+                           G_CALLBACK (update_color),
+                           self,
+                           G_CONNECT_SWAPPED);
+
+  g_signal_connect_object (event,
+                           "notify::summary",
+                           G_CALLBACK (gtk_widget_queue_draw),
+                           self,
+                           G_CONNECT_SWAPPED);
 
   /* Tooltip */
   gcal_event_widget_set_event_tooltip (self, event);
diff --git a/src/views/gcal-month-popover.c b/src/views/gcal-month-popover.c
index 9ec74f05..711bc835 100644
--- a/src/views/gcal-month-popover.c
+++ b/src/views/gcal-month-popover.c
@@ -354,10 +354,11 @@ update_event_list (GcalMonthPopover *self)
 
       gtk_container_add (GTK_CONTAINER (self->listbox), event_widget);
 
-      g_signal_connect (event_widget,
-                        "activate",
-                        G_CALLBACK (event_activated_cb),
-                        self);
+      g_signal_connect_object (event_widget,
+                               "activate",
+                               G_CALLBACK (event_activated_cb),
+                               self,
+                               0);
     }
 
   gtk_widget_show_all (self->listbox);
diff --git a/src/views/gcal-month-view.c b/src/views/gcal-month-view.c
index e7c41418..cde8062b 100644
--- a/src/views/gcal-month-view.c
+++ b/src/views/gcal-month-view.c
@@ -188,8 +188,8 @@ setup_child_widget (GcalMonthView *self,
   if (!gtk_widget_get_parent (widget))
     gtk_widget_set_parent (widget, GTK_WIDGET (self));
 
-  g_signal_connect (widget, "activate", G_CALLBACK (on_event_activated_cb), self);
-  g_signal_connect (widget, "notify::visible", G_CALLBACK (on_event_widget_visibility_changed_cb), self);
+  g_signal_connect_object (widget, "activate", G_CALLBACK (on_event_activated_cb), self, 0);
+  g_signal_connect_object (widget, "notify::visible", G_CALLBACK (on_event_widget_visibility_changed_cb), 
self, 0);
 }
 
 static gboolean
@@ -861,7 +861,7 @@ setup_month_grid (GcalMonthView *self,
 
           cell = gcal_month_cell_new ();
 
-          g_signal_connect (cell, "show-overflow", G_CALLBACK (on_month_cell_show_overflow_popover_cb), 
self);
+          g_signal_connect_object (cell, "show-overflow", G_CALLBACK 
(on_month_cell_show_overflow_popover_cb), self, 0);
 
           self->month_cell[row][col] = cell;
 
@@ -2343,6 +2343,6 @@ gcal_month_view_init (GcalMonthView *self)
                           "context",
                           G_BINDING_DEFAULT);
 
-  g_signal_connect (self->overflow_popover, "event-activated", G_CALLBACK 
(on_month_popover_event_activated_cb), self);
+  g_signal_connect_object (self->overflow_popover, "event-activated", G_CALLBACK 
(on_month_popover_event_activated_cb), self, 0);
 }
 
diff --git a/src/views/gcal-week-header.c b/src/views/gcal-week-header.c
index 41c55402..a0d0820f 100644
--- a/src/views/gcal-week-header.c
+++ b/src/views/gcal-week-header.c
@@ -221,7 +221,7 @@ setup_event_widget (GcalWeekHeader *self,
                     GtkWidget      *widget)
 {
   gtk_widget_set_margin_end (widget, 6);
-  g_signal_connect (widget, "activate", G_CALLBACK (on_event_widget_activated), self);
+  g_signal_connect_object (widget, "activate", G_CALLBACK (on_event_widget_activated), self, 0);
 }
 
 static inline void
diff --git a/src/views/gcal-week-view.c b/src/views/gcal-week-view.c
index 1622ecf7..9d9b7111 100644
--- a/src/views/gcal-week-view.c
+++ b/src/views/gcal-week-view.c
@@ -118,10 +118,11 @@ update_grid_scroll_position (GcalWeekView *self)
 
       stack = gtk_widget_get_ancestor (GTK_WIDGET (self), GTK_TYPE_STACK);
 
-      g_signal_connect (stack,
-                        "notify::visible-child",
-                        G_CALLBACK (stack_visible_child_changed_cb),
-                        self);
+      g_signal_connect_object (stack,
+                               "notify::visible-child",
+                               G_CALLBACK (stack_visible_child_changed_cb),
+                               self,
+                               0);
 
       self->scroll_grid_timeout_id = 0;
 
diff --git a/src/views/gcal-year-view.c b/src/views/gcal-year-view.c
index 9d853ead..a0292415 100644
--- a/src/views/gcal-year-view.c
+++ b/src/views/gcal-year-view.c
@@ -492,7 +492,7 @@ update_sidebar (GcalYearView *year_view)
         {
           child_widget = l->data;
           gtk_widget_show (child_widget);
-          g_signal_connect (child_widget, "activate", G_CALLBACK (event_activated), year_view);
+          g_signal_connect_object (child_widget, "activate", G_CALLBACK (event_activated), year_view, 0);
           g_object_set_data (G_OBJECT (child_widget), "shift", GINT_TO_POINTER (i));
           gtk_container_add (GTK_CONTAINER (year_view->events_sidebar), child_widget);
         }
@@ -2118,7 +2118,7 @@ gcal_year_view_init (GcalYearView *self)
   /* bind GNOME Shell' show week numbers property to GNOME Calendar's one */
   self->calendar_settings = g_settings_new ("org.gnome.desktop.calendar");
   g_settings_bind (self->calendar_settings, "show-weekdate", self, "show-week-numbers", 
G_SETTINGS_BIND_DEFAULT);
-  g_signal_connect_swapped (self->calendar_settings, "changed::show-weekdate", G_CALLBACK 
(gtk_widget_queue_draw), self);
+  g_signal_connect_object (self->calendar_settings, "changed::show-weekdate", G_CALLBACK 
(gtk_widget_queue_draw), self, G_CONNECT_SWAPPED);
 
   /* layout */
   self->number_of_columns = 4;
diff --git a/src/weather/gcal-weather-service.c b/src/weather/gcal-weather-service.c
index 1d09b088..994b7654 100644
--- a/src/weather/gcal-weather-service.c
+++ b/src/weather/gcal-weather-service.c
@@ -759,16 +759,18 @@ on_gclue_simple_creation_cb (GClueSimple        *_source,
     {
       update_gclue_location (self, location);
 
-      g_signal_connect (location,
-                        "notify::location",
-                        G_CALLBACK (on_gclue_location_changed_cb),
-                        self);
+      g_signal_connect_object (location,
+                               "notify::location",
+                               G_CALLBACK (on_gclue_location_changed_cb),
+                               self,
+                               0);
     }
 
-  g_signal_connect (client,
-                    "notify::active",
-                    G_CALLBACK (on_gclue_client_activity_changed_cb),
-                    self);
+  g_signal_connect_object (client,
+                           "notify::active",
+                           G_CALLBACK (on_gclue_client_activity_changed_cb),
+                           self,
+                           0);
 
   GCAL_EXIT;
 }


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