aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--calendar/ChangeLog11
-rw-r--r--calendar/gui/e-meeting-time-sel.c12
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