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
This commit is contained in:
committed by
Georges Basile Stavracas Neto
parent
9644c30eee
commit
18ae67cb59
@@ -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",
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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*
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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_object (event,
|
||||
"notify::color",
|
||||
G_CALLBACK (update_color),
|
||||
self,
|
||||
G_CONNECT_SWAPPED);
|
||||
|
||||
g_signal_connect_swapped (event,
|
||||
"notify::summary",
|
||||
G_CALLBACK (gtk_widget_queue_draw),
|
||||
self);
|
||||
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);
|
||||
|
||||
Reference in New Issue
Block a user