diff options
-rw-r--r-- | calendar/ChangeLog | 11 | ||||
-rw-r--r-- | calendar/gui/e-meeting-time-sel.c | 12 |
2 files changed, 20 insertions, 3 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog index 714cb687f5..0fd251f4f5 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,6 +1,15 @@ 2003-04-07 JP Rosevear <jpr@ximian.com> - * gui/dialogs/event-page.glade: create button properly + Fixes #40876 + + * gui/e-meeting-time-sel.c + (e_meeting_time_selector_refresh_free_busy): guard against + callbacks after destruction + (e_meeting_time_selector_refresh_cb): ditto + +2003-04-07 JP Rosevear <jpr@ximian.com> + + * gui/dialogs/event-page.glade: create buttons properly * gui/itip-utils.c (comp_server_send): for errors other than busy, we want to email the results diff --git a/calendar/gui/e-meeting-time-sel.c b/calendar/gui/e-meeting-time-sel.c index 7e21598115..b857814125 100644 --- a/calendar/gui/e-meeting-time-sel.c +++ b/calendar/gui/e-meeting-time-sel.c @@ -1223,8 +1223,11 @@ static void e_meeting_time_selector_refresh_cb (gpointer data) { EMeetingTimeSelector *mts = data; - gtk_widget_queue_draw (mts->display_top); - gtk_widget_queue_draw (mts->display_main); + + if (mts->display_top != NULL) + gtk_widget_queue_draw (mts->display_top); + if (mts->display_main != NULL) + gtk_widget_queue_draw (mts->display_main); } static void @@ -1241,12 +1244,17 @@ e_meeting_time_selector_refresh_free_busy (EMeetingTimeSelector *mts, int row, g end.hour = 0; end.minute = 0; + /* Ref ourselves in case we are called back after destruction */ + gtk_object_ref (GTK_OBJECT (mts)); + if (all) e_meeting_model_refresh_all_busy_periods (mts->model, &start, &end, e_meeting_time_selector_refresh_cb, mts); else e_meeting_model_refresh_busy_periods (mts->model, row, &start, &end, e_meeting_time_selector_refresh_cb, mts); + + gtk_object_unref (GTK_OBJECT (mts)); } EMeetingTimeSelectorAutopickOption |