aboutsummaryrefslogtreecommitdiffstats
path: root/calendar
diff options
context:
space:
mode:
authorJP Rosevear <jpr@ximian.com>2003-04-08 04:02:52 +0800
committerJP Rosevear <jpr@src.gnome.org>2003-04-08 04:02:52 +0800
commit18b0c8df946cd8dd936c5a81bb2f143371d28060 (patch)
treee9bd3b2efaa00dfb8cdcc8929c072f432650e2fb /calendar
parent5c0dca8bd51d32374d72ca870d0bfa11df8f1e78 (diff)
downloadgsoc2013-evolution-18b0c8df946cd8dd936c5a81bb2f143371d28060.tar.gz
gsoc2013-evolution-18b0c8df946cd8dd936c5a81bb2f143371d28060.tar.zst
gsoc2013-evolution-18b0c8df946cd8dd936c5a81bb2f143371d28060.zip
Fixes #40876
2003-04-07 JP Rosevear <jpr@ximian.com> 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 svn path=/trunk/; revision=20727
Diffstat (limited to 'calendar')
-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