diff options
author | Harish Krishnaswamy <kharish@novell.com> | 2006-11-15 02:19:05 +0800 |
---|---|---|
committer | Harish Krishnaswamy <kharish@src.gnome.org> | 2006-11-15 02:19:05 +0800 |
commit | 9493a6b36f248e4fc6144bf8b50ba64474c1be2d (patch) | |
tree | 32a64ceb81799acdf7e2f0e7bf39c51a44ad8f78 /calendar/gui/gnome-cal.c | |
parent | 53837df6ae13d51568aefdab5bdcb110b939e406 (diff) | |
download | gsoc2013-evolution-9493a6b36f248e4fc6144bf8b50ba64474c1be2d.tar.gz gsoc2013-evolution-9493a6b36f248e4fc6144bf8b50ba64474c1be2d.tar.zst gsoc2013-evolution-9493a6b36f248e4fc6144bf8b50ba64474c1be2d.zip |
Disconnect signal handlers before gcal is destroyed. Fixes #208959
2006-11-14 Harish Krishnaswamy <kharish@novell.com>
* gui/gnome-cal.c: (gnome_calendar_destroy):
Disconnect signal handlers before gcal is destroyed.
Fixes #208959 (bugzilla.novell.com).
svn path=/trunk/; revision=32977
Diffstat (limited to 'calendar/gui/gnome-cal.c')
-rw-r--r-- | calendar/gui/gnome-cal.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/calendar/gui/gnome-cal.c b/calendar/gui/gnome-cal.c index f0f240c172..b58a75bc08 100644 --- a/calendar/gui/gnome-cal.c +++ b/calendar/gui/gnome-cal.c @@ -1719,6 +1719,7 @@ gnome_calendar_destroy (GtkObject *object) GnomeCalendar *gcal; GnomeCalendarPrivate *priv; gchar *filename; + ECalModel *cal_model; g_return_if_fail (object != NULL); g_return_if_fail (GNOME_IS_CALENDAR (object)); @@ -1774,7 +1775,7 @@ gnome_calendar_destroy (GtkObject *object) calendar_config_remove_notification (GPOINTER_TO_UINT (l->data)); g_list_free (priv->notifications); priv->notifications = NULL; - + /* Save the TaskPad layout. */ filename = g_build_filename (calendar_component_peek_config_directory (calendar_component_peek ()), "TaskPad", NULL); @@ -1847,6 +1848,24 @@ gnome_calendar_destroy (GtkObject *object) g_object_unref (priv->memopad_menu); priv->memopad_menu = NULL; } + /* Disconnect all handlers */ + cal_model = e_calendar_view_get_model ((ECalendarView *)priv->week_view); + g_signal_handlers_disconnect_by_func (cal_model, + G_CALLBACK (view_progress_cb), gcal); + g_signal_handlers_disconnect_by_func (cal_model, + G_CALLBACK (view_done_cb), gcal); + + cal_model = e_calendar_table_get_model ((ECalendarTable *) priv->todo); + g_signal_handlers_disconnect_by_func (cal_model, + G_CALLBACK (view_progress_cb), gcal); + g_signal_handlers_disconnect_by_func (cal_model, + G_CALLBACK (view_done_cb), gcal); + + cal_model = e_memo_table_get_model ((EMemoTable *)priv->memo); + g_signal_handlers_disconnect_by_func (cal_model, + G_CALLBACK (view_progress_cb), gcal); + g_signal_handlers_disconnect_by_func (cal_model, + G_CALLBACK (view_done_cb), gcal); g_free (priv); gcal->priv = NULL; |