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
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user