diff options
Diffstat (limited to 'calendar')
-rw-r--r-- | calendar/gui/e-day-view.c | 7 | ||||
-rw-r--r-- | calendar/gui/e-week-view.c | 5 | ||||
-rw-r--r-- | calendar/gui/gnome-cal.c | 5 |
3 files changed, 13 insertions, 4 deletions
diff --git a/calendar/gui/e-day-view.c b/calendar/gui/e-day-view.c index 9be015d190..4e31f2c858 100644 --- a/calendar/gui/e-day-view.c +++ b/calendar/gui/e-day-view.c @@ -744,9 +744,16 @@ static void day_view_dispose (GObject *object) { EDayView *day_view; + ECalModel *model; gint day; day_view = E_DAY_VIEW (object); + model = e_calendar_view_get_model (E_CALENDAR_VIEW (day_view)); + + if (model) { + g_signal_handlers_disconnect_by_data (model, day_view); + g_signal_handlers_disconnect_by_data (model, day_view->main_canvas); + } e_day_view_cancel_layout (day_view); diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c index 30d8aa5278..0eb04f2a27 100644 --- a/calendar/gui/e-week-view.c +++ b/calendar/gui/e-week-view.c @@ -684,11 +684,16 @@ static void week_view_dispose (GObject *object) { EWeekView *week_view; + ECalModel *model; week_view = E_WEEK_VIEW (object); + model = e_calendar_view_get_model (E_CALENDAR_VIEW (object)); e_week_view_cancel_layout (week_view); + if (model) + g_signal_handlers_disconnect_by_data (model, object); + if (week_view->events) { e_week_view_free_events (week_view); g_array_free (week_view->events, TRUE); diff --git a/calendar/gui/gnome-cal.c b/calendar/gui/gnome-cal.c index 442ee98932..e9d0e18c6d 100644 --- a/calendar/gui/gnome-cal.c +++ b/calendar/gui/gnome-cal.c @@ -1573,10 +1573,7 @@ gnome_calendar_do_dispose (GObject *object) } if (priv->model != NULL) { - g_signal_handlers_disconnect_by_func ( - priv->model, view_progress_cb, object); - g_signal_handlers_disconnect_by_func ( - priv->model, view_complete_cb, object); + g_signal_handlers_disconnect_by_data (priv->model, object); g_object_unref (priv->model); priv->model = NULL; } |